IT:WhereAmI/OSM Binary Format

From OpenStreetMap Wiki
Jump to navigation Jump to search

Formato binario OSM

Questa è una alternativa al formato XML comunemente utilizzato per la distribuzione dei dati cartografici OSM. Ci sono anche delle aggiunte per l'utilizzo in dispositivi mobili OSM_Mobile_Binary_Protocol.

Esso non si riferisce al formato OSMbin.

Il formato

La struttura di base di questo formato è costituita da una serie di blocchi binari che specificano la loro dimensione seguita da un tipo, seguito a sua volta dai dati codificati.

  • Dimensione - intero senza segno a 32bit indicante la lunghezza (questo valore non include i 4 byte utilizzati per specificare la stessa lunghezza)
  • Tipo - intero senza segno a 8bit indicante il tipo (come definito alla pagina dei tipi)
  • Dati - dati binari in qualsiasi formato

Per risparmiare spazio, i valori di longitudine e latitudine sono codificati come interi con segno a 32bit a partire dai valori decimali fino alla sesta cifra decimale (es. latitudine/longitudine * 1000000). Questo permette una precisione di ~11cm che soddisfa la maggior parte dei progetti cartografici. I campi Ora/Data sono specificati come il numero di secondi trascorsi dalla Unix Epoch (1 Gennaio 1970 00:00:00 GMT). Le stringhe sono troncate a 255 caratteri e sono specificate come una lunghezza seguita dai caratteri codificati in UTF8.

I nodi OSM non sono trasmessi nella loro totalità, bensì sono inclusi solamente i nodi significativi (nodi con meta dati aggiuntivi - punti di interesse).

I percorsi riducono i dati necessari ad essere trasmessi inviando solamente le posizioni dei nodi mediante coppie longitudine/latitudine, la prima coppia longitudine/latitudine utilizza 32bit e le seguenti sono i valori a 16bit dello scostamento rispetto alla posizione del nodo precedente, se lo scostamento è troppo grande allora vengono inseriti dei nodi immaginari per riempire la mancanza.

Testata

[dimensione del blocco=0x02 0x00 0x00 0x00] 0x05 0x3B

C'è una testata opzionale di 6 byte all'inizio di un file in formato binario OSM. (motivo della decisione: 0=O, 5=S, 3=M, B=B)

Questo indica semplicemente ai programmi di riconoscimento dei file che il contenuto è obf.

Punti di interesse (POI)

Percorsi

  • Dimensione (32bit)
  • Tipo - 'w' (8bit)
  • Identificativo del percorso (32bit)
  • Numero di nodi (32bit)
  • Longitudine (32bit)
  • Latitudine (32bit)
  • Seguito da:
    • Scostamento della longitudine (16bit)
    • Scostamento della latitudine (16bit)
  • Etichette della caratteristica vedere Etichette della caratteristica

Relazioni

  • Dimensione (32bit)
  • Tipo - 'r' (8bit)
  • Identificativo della relazione (32bit)
  • Tipo della relazione (8bit) vedere Tipi di relazione
  • Numero dei membri (32bit)
  • Seguito da:
    • Tipo/ruolo del membro (8bit) vedere Ruoli delle relazioni
    • Identificativo del membro (identificativo a 32bit del percorso oppure identificativo a 64bit del punto di interesse) (ripetuto se necessario)
  • Etichette della caratteristica vedere Etichette della caratteristica

Utilizzo

Il formato binario OSM è stato progettato per i tipi di programma seguenti:

  • programmi di mappatura

Non è stato progettato per:

E' ottimizzato per:

  • utilizzo generico

Questo formato è supportato dai seguenti programmi: