DE:OSM XML
Eine .osm-Datei enthält die OpenStreetMap-Daten (die Grundelemente nodes, ways und relations sowie deren tags) im XML-Format. Die Änderungsätze können ebenfalls enthalten sein.
planet.osm ist die bekannteste osm-Datei. Sie enthält alle vorhandenen Daten und beschreibt somit die komplette Erde. Kleinere Auszüge (extracts) der Datenbank werden von verschiedenen Anbietern ebenfalls in diesem Datenformat zur Verfügung gestellt. Auch ein Aufruf über die API liefert die Daten im osm-Format.
Varianten
Da das Format nie wirklich festgelegt wurde, muss man aufpassen, wenn man die Daten von nicht bekannten Quellen auslesen möchte.
Die folgende Auflistung zeigt die Unterschiede der .osm-Dateien, die die verschiedenen Programme verwenden:
- API und JOSM verwenden das Element
bounds
, Osmosis und planet.osm das Elementbound
mit den 2 Attributenbox="-90,-180,90,180"
undorigin
- Das Attribut
visible
wird von planet.osm nicht verwendet und die anderen Programme schreiben es nur wenn es auffalse
gesetzt ist. Am Besten prüft man, ob es vorhanden ist und nimmt als Standard den Werttrue
an. user
unduid
können fehlen, da es früher möglich war, anonyme Bearbeitungen durchzuführen. Mittlerweile ist dies nicht mehr erlaubt, es können jedoch noch immer Objekte ohne diese Attribute vorhanden sein (vor allem bei alten Objekten, die schon lange nicht mehr verändert wurden).- Es gibt das optionale Attribut
num_changes
für Änderungssätze, aufgrund von Unbeständigkeiten wird es jedoch nicht verwendet. - Es ist möglich, dass ein Objekt in verschiedenen Versionen vorkommt und auch die Reihenfolge ist nicht immer gleich.
- JOSM verwendet ein abgewandeltes Format, dass für neue Objekte eine negative ID-Nummer festlegt und denen die Attribute
timestamp
,version
orchangeset
fehlen. Es kann jedoch einaction
Attribut vorhanden sein. Ausserdem verwendet JOSMvisible="true"
.
Beispiel
Das folgende Beispiel zeigt eine einfach .osm Datei. Nähere Informationen über die einzelnen XML-Elemente findet man auf der Seite 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>
Das obige Beispiel entstand durch den API-Aufruf
.osm-Dateien verarbeiten
Es gibt verschiedene Programme für die Bearbeitung von .osm-Dateien, wobei Osmosis das bekannteste ist.