IT:OSM XML

From OpenStreetMap Wiki
Jump to navigation Jump to search

Introduzione

I file .osm sono in formato XML e rappresentano i dati di 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. Gli estratti di regioni e comuni italiani sono disponibili su http://osm-estratti.wmflabs.org/estratti/

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'elemento bound con due attributi: box="-90,-180,90,180" e origin.
  • L'attributo visible non è incluso in planet.osm e gli altri strumenti lo scrivono solo se è false. Il meglio per testarne l'esistenza è assumere come default true.
  • user e uid potrebbero 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_changes per 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, version o changeset per gli elementi nuovi. Può essere presente l'attributo action. JOSM include anche l'attributo visible="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