DE:OSM XML

From OpenStreetMap Wiki
Jump to navigation Jump to search

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 Element bound mit den 2 Attributen box="-90,-180,90,180" und origin
  • Das Attribut visible wird von planet.osm nicht verwendet und die anderen Programme schreiben es nur wenn es auf false gesetzt ist. Am Besten prüft man, ob es vorhanden ist und nimmt als Standard den Wert true an.
  • user und uid 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 or changeset fehlen. Es kann jedoch ein action Attribut vorhanden sein. Ausserdem verwendet JOSM visible="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

http://api.openstreetmap.org/api/0.6/map?bbox=-0.108157396316528,51.5073601795557,-0.107599496841431,51.5076406454029

.osm-Dateien verarbeiten

Es gibt verschiedene Programme für die Bearbeitung von .osm-Dateien, wobei Osmosis das bekannteste ist.