IT:OSM XML
Introduzione
I file .osm sono in formato XML e rappresentano i dati si OpenStreetMap. Sono rappresentati nodi, vie e relazioni (Data Primitives) insieme alle relative etichette (tag). un file .osm può anche includere dei gruppi di modifiche (changesets).
Il file planet.osm è il più grande, contiene l'intero pianeta Terra (una fotografia di tutti i nodi, le vie, le relazioni della base dati). Esistono anche file .osm per aree più piccole, chiamati estratti. Usando l'API bbox request si ottiene un file in questo formato.
L'editor di mappe JOSM usa l'estensione .osm (formato file JOSM) sia per i dati appena scaricati dal server che per quelli salvati in locale (dati modificati non caricati sul server). Questi ultimi possiedono numeri di identificazione negativi che identificano i nuovi oggetti creati, oltre ai diversi attributi per le azioni come ad esempio action="delete" per gli elementi eliminati.
Esistono diversi modi per scaricare i dati .osm: get .osm data.
Variazioni
Il formato non è mai stato specificato formalmente. Si rende quindi necessaria un'attenta analisi prima di implementare strumenti di decodificazione per questi file.
Ci sono alcune differenze tra i programmi più comuni che creano file .osm:
- Le API e JOSM usano l'elemento
bounds. Osmosis e Planet.osm includono l'elementoboundcon due attributi:box="-90,-180,90,180"eorigin. - L'attributo
visiblenon è incluso in planet.osm e gli altri strumenti lo scrivono solo se èfalse. Il meglio per testarne l'esistenza è assumere come defaulttrue. usereuidpotrebbero non essere presenti perchè in passato era possibile nascondere l'identità di chi compiva le modifiche al pubblico. Anche se non è più possibile, questo si potrebbe incontrare in alcuni elementi vecchi o non modificati da tempo.- Esiste un attributo opzionale
num_changesper i Changesets (E' stato rimosso dallo strumento di esportazione della cronologia delle modifiche per la sua inconsistenza). - Ci potrebbero essere più versione di uno stesso elemento in un file .osm e l'ordine degli elementi non è sempre lo stesso.
- JOSM salva i file nel formato JOSM format, che non include
timestamp,versionochangesetper gli elementi nuovi. Può essere presente l'attributoaction. JOSM include anche l'attributovisible="true"attribute.
Si possono controllare le pagine XSD e DTD per dettagli sui tentativi di definire il formato in questi linguaggi.
Esempio
Questo è un esempio di un file .osm molto semplice. Per altre informazioni sul significato dei diversi elementi XML si veda Data Primitives
<?xml version="1.0" encoding="UTF-8"?> <osm version="0.6" generator="OpenStreetMap server"> <bounds minlat="51.5073601795557" minlon="-0.108157396316528" maxlat="51.5076406454029" maxlon="-0.107599496841431"/> <node id="319408586" lat="51.5074089" lon="-0.1080108" version="1" changeset="440330" user="smsm1" uid="6871" visible="true" timestamp="2008-12-17T01:18:42Z"/> <node id="319408587" lat="51.5074343" lon="-0.1081264" version="1" changeset="440330" user="smsm1" uid="6871" visible="true" timestamp="2008-12-17T01:18:42Z"/> <node id="275452090" lat="51.5075933" lon="-0.1076186" version="3" changeset="2980587" user="nickb" uid="1697" visible="true" timestamp="2009-10-29T12:14:35Z"> <tag k="name" v="Jam's Sandwich Bar"/> <tag k="amenity" v="cafe"/> </node> <node id="304994980" lat="51.5074645" lon="-0.1075735" version="2" changeset="388960" user="BiIbo" uid="3516" visible="true" timestamp="2009-02-13T00:41:47Z"> <tag k="barrier" v="gate"/> </node> <node id="304994981" lat="51.5074723" lon="-0.1075014" version="1" changeset="374143" user="Matt" uid="70" visible="true" timestamp="2008-10-16T16:35:57Z"/> <node id="304994979" lat="51.507406" lon="-0.1083348" version="4" changeset="2114003" user="jamicu" uid="38244" visible="true" timestamp="2009-08-12T01:33:32Z"/> <way id="27776903" visible="true" timestamp="2009-05-31T13:39:15Z" version="3" changeset="1368552" user="Matt" uid="70"> <nd ref="304994979"/> <nd ref="319408587"/> <nd ref="319408586"/> <nd ref="304994980"/> <nd ref="304994981"/> <tag k="access" v="private"/> <tag k="highway" v="service"/> </way> </osm>
In questo esempio si vedono i dati usciti da questa richiesta: :http://api.openstreetmap.org/api/0.6/map?bbox=-0.108157396316528,51.5073601795557,-0.107599496841431,51.5076406454029