DE:Xapi

From OpenStreetMap Wiki
Jump to: navigation, search
Help
Available languages
Deutsch English Français 日本語 Português do Brasil

Die OSM Extended API (auch xapi) ist eine read-only API, d.h. es sind nur Lesezugriffe erlaubt. Sie basiert auf einer modifizierten Version der Standard API, welche erweiterte Such- und Abfragemechanismen anbietet. Neben den üblichen Kartenabfragen sind viele Möglichkeiten, OSM-Daten z.B. nach Schlüsselwerten zu selektieren, implementiert.

Die verwendete Datenbank ist ein Mirror der zentralen OSM Datenbank. Normalerweise sind Änderungen in der Hauptdatenbank nach 10 Minuten auch auf den Mirror übertragen.

Je nach Tageszeit muss auf Grund der Vielzahl der Zugriffe mit sehr hohen Antwortzeiten und gelegentlich kurzen Ausfällen gerechnet werden.

Osmxapi benutzt eine REST-Style-Schnittstelle mit X-path.

Alle Antworten haben grundsätzlich das gleiche Format wie das Standard-Protokoll, können aber erweiterte Namensräume besitzen. Die Suche nach Schlüsseln verwendet eine X-path-ähliche Syntax zum Spezifizieren der Suchbegriffe.

Contents

Server

Der xapi-Service wird von mehreren verschiedenen Servern angeboten. Jeder dieser Server kann entweder direkt oder über informationfreeway, der die Anfrage an einen geeigneten Server weiterleitet, angesprochen werden. Auf der englischen Seite sind die Servernamen je nach Verfügbarkeit eingefärbt.

Kartenabfrage

Die Kartenabfrage funktioniert identisch wie die Kartenabfrage auf der Haupt-API und liefert:

GET /api/0.6/map?bbox=links,unten,rechts,oben

mit:

Beispiel

http://www.informationfreeway.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145
( http://xapi.openstreetmap.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145 )

Kommentar

/api/0.6/*[bbox=links,unten,rechts,oben]

Tag Query

Osmxapi verarbeitet Anfragen für alle drei Sorten von Elementen; Punkte, Wege und Relationen.

Punkte

Eine Punkte-Abfrage liefert ein XML-Dokument, welche Punkte zusammen mit den dazugehörigen Tags enthält. Die URL für eine Punkt-Abfrage hat folgende Form:

 http://www.informationfreeway.org/api/0.6/node[...]

Dies liefert eine Standard-OSM-API-Antwort, welche die Punkte und ihre Tags enthält. Beispiel:

 <?xml version='1.0' standalone='no'?>
 <osm version='0.6' generator='osmxapi: OSM Extended API' 
  xmlns:osmxapi='http://www.informationfreeway.org/osmxapi/0.6'
  osmxapi:uri='/api/0.6/node[amenity=hospital]'
  osmxapi:planetDate='200803150826' 
  osmxapi:copyright='2008 OpenStreetMap contributors' 
  osmxapi:instance='zappy2'>
   <node id='672180' lat='48.2111685091189' lon='16.3035366605548' timestamp='2006-09-11T16:28:25+01:00'>
     <tag  k='amenity' v='hospital'/>
     <tag  k='name' v='Wilhelminenspital'/>
   </node>
   <node id='3596186' lat='53.4633699598014' lon='-2.22667910006381' timestamp='2007-06-21T17:10:58+01:00'>
     <tag  k='amenity' v='hospital'/>
     <tag  k='name' v='Manchester Royal Infirmary'/>
   </node>
   ...
 </osm>

Wege

Für die Abfrage von Wegen hat die URL folgende Form:

 http://www.informationfreeway.org/api/0.6/way[...]

Dies liefert wieder ein XML-Dokument, welches die Wege enthält, die auf die Suchbegriffe zutreffen. Für jeden passenden Weg werden außerdem alle referenzierten Punkte geliefert. Eine Antwort könnten so aussehen:

 <?xml version='1.0' standalone='no'?>
 <osm version='0.6' generator='osmxapi: OSM Extended API' 
  xmlns:osmxapi='http://www.informationfreeway.org/osmxapi/0.6'
  osmxapi:uri='/api/0.6/way[landuse=residential]'
  osmxapi:planetDate='200803150826' 
  osmxapi:copyright='2008 OpenStreetMap contributors' 
  osmxapi:instance='zappy2'>
   <node id='218963' lat='52.5611324692581' lon='-1.79024812573334' timestamp='2006-03-22T16:47:48+00:00'>
   </node>
   <node id='331193' lat='53.7091237972264' lon='-1.50282510180841' timestamp='2007-03-31T00:09:22+01:00'>
     <tag  k='highway' v='traffic_signals'/>
     <tag  k='source' v='Yahoo'/>
   </node>
   ... 
   <way id='4958218' timestamp='2007-07-25T01:55:35+01:00'>
     <nd ref='218963'/>
     <nd ref='331193'/>
     ...
     <tag  k='landuse' v='residential'/>
     <tag  k='source' v='landsat'/>
   </way>
 </osm>

Relationen

Für Relationen sieht die URL so aus:

 http://www.informationfreeway.org/api/0.6/relation[...]

Das gelieferte XML-Dokument enthält die Relationen, die auf die Suchbegriffe passen. Für jede Relation werden zusätzlich alle referenzierten Punkte und Wege geliefert. Beispiel:

 <?xml version='1.0' standalone='no'?>
 <osm version='0.6' generator='osmxapi: OSM Extended API' 
  xmlns:osmxapi='http://www.informationfreeway.org/osmxapi/0.6'
  osmxapi:uri='/api/0.6/way[landuse=residential]'
  osmxapi:planetDate='200803150826' 
  osmxapi:copyright='2008 OpenStreetMap contributors' 
  osmxapi:instance='zappy2'>
   <node ...
   <way ...
   <relation id='2670' timestamp='2007-10-25T03:05:34Z'>
     <member type='way' ref='3992472' role=/>
     <member type='way' ref='3992524' role=/>
     <member type='way' ref='4253050' role=/>
     <member type='way' ref='4253053' role=/>
     <member type='way' ref='4266813' role=/>
     <member type='way' ref='10285106' role=/>
     <tag k='name' v='Fonnereau Way'/>
     <tag k='network' v='Ipswich footpaths'/>
     <tag k='type' v='route'/>
   </relation>    
 </osm>

Beliebige Elemente

Möchte man nicht nach Elementen (Punkte, Wege, Relationen) selektieren, sondern in einem Aufruf gleich alle Elemente für bestimmte Suchbegriffe erhalten, ist folgende URL zu verwenden:

 http://www.informationfreeway.org/api/0.6/*[...]

Dies liefert wieder ein XML-Dokument, welches alle Punkte, Wege und Relationen enthält, die auf die Suchbegriffe passen. Wie auch bei der selektierten Abfrage werden hier für alle passenden Wege die referenzierten Punkte und für alle Relationen die dazugehörigen Punkte und Wege (von diesen natürlich auch die Punkte) geliefert. Beispiel:

 <?xml version='1.0' standalone='no'?>
 <osm version='0.6' generator='osmxapi: OSM Extended API' 
  xmlns:osmxapi='http://www.informationfreeway.org/osmxapi/0.6'
  osmxapi:uri='/api/0.6/*[amenity=hotel]'
  osmxapi:planetDate='200803150826' 
  osmxapi:copyright='2008 OpenStreetMap contributors' 
  osmxapi:instance='zappy2'>
   <node id='218963' lat='52.5611324692581' lon='-1.79024812573334' timestamp='2006-03-22T16:47:48+00:00'>
   </node>
   <node id='331193' lat='53.7091237972264' lon='-1.50282510180841' timestamp='2007-03-31T00:09:22+01:00'>
     <tag k='amenity' v='hotel'/>
   </node>
   ... 
   <way id='4958218' timestamp='2007-07-25T01:55:35+01:00'>
     <nd ref='218963'/>
     <nd ref='331193'/>
     ...
     <tag k='amenity' v='hotel'/>
     <tag k='building' v='hotel'/>
   </way>
   <relation id='123456' timestamp='2007-10-25T03:05:34Z'>
     <member type='node' ref='331193' role=/>
     <member type='node' ref='331194' role=/>
     ...
     <tag k='amenity' v='hotel'/>
     <tag k='operator' v='Premier Inns'/>
     <tag k='type' v='operators'/>
   </relation>    
 </osm>

Suchbegriffe

An jede API-Anfrage können Prädikate angehängt werden um festzulegen, welche Elemente selektiert werden sollen. Beispielsweise selektiert [amenity=hospital] alle Elemente, bei denen der Schlüssel amenity den Wert hospital besitzt. Die komplette URL für eine solche Abfrage wäre dann:

 http://www.informationfreeway.org/api/0.6/node[amenity=hospital]

Es ist auch möglich mehrere solcher Prädikate anzuhängen, wobei jedes weitere angehängte Prädikat das Ergebnis weiter einschränkt. Momentan ist dies begrenzt auf ein Schlüssel-Prädikat und ein Bounding-Box-Prädikat. Beispiel:

 http://www.informationfreeway.org/api/0.6/node[amenity=hospital][bbox=-6,50,2,61]

Diese Anfrage liefert alle Punkte mit amenity=hospital, welche in der genannten Bounding-Box liegen. Die angegebene umfasst ganz England, Wales und Schottland.

Tag-Prädikate

Ein Prädikat hat die Form [key=value]. Beispiel: node[amenity=hospital] passt auf alle Punkte, die den Schlüssel amenity mit dem Wert hospital besitzen, d.h. <tag k="amenity" v="hospital"/>.

Für Schlüssel und Wert können auch Platzhalter verwendet werden:

Um verschiedene Werte eines Schlüssels gleichzeitig zu selektieren (also die Vereinigungsmenge aus mehreren Einzelanfragen zu bilden), kann der Vereinigungsoperator benutzt werden. Um beispielsweise alle größeren Straßen zu selektieren:

Der Vereinigungsoperator funktioniert auch bei Schlüsseln:

Hinweis: Die URL muss in UTF-8 kodiert und URLEncoded sein, falls Nicht-ASCII-Zeichen verwendet werden. Firefox (Version 2.0.0.11 und höher) benutzt als Standard immer noch ISO-8859-1-Kodierung. [1]

BBox Prädikate

Eine andere Form des Prädikats ist die Verwendung des bbox-Pseudo-Schlüssels. Ein Prädikat der Form [bbox=links,unten,rechts,oben] definiert ein Rechteck, welches die Größe des Ergebnisses beschränkt. Nur Elemente, welche teilweise innerhalb dieses Rechtecks liegen, sind im Ergebnisdokument enthalten.

Im Gegensatz zur Standard-OSM-API besteht bei xapi keine Größenbegrenzung für die Bounding-Box, wenn es zusammen mit einem Tag-Prädikat verwendet wird. Ohne Tag-Prädikat ist es auf 100 Quadrat-Grad beschränkt.

Die Standard-Bounding-Box, die angenommen wird, wenn keine spezifiziert wird, umfasst den ganzen Planeten.

Tags

Hauptsächlich sind Anfragen an xapi solche, die eine Schlüssel/Wert-Kombination selektieren. Zusätzlich zu den üblichen Schlüsseln speichert xapi eine Reihe nützlicher Pseudo-Schlüssel. Diese befinden sich alle im osm: Namensraum um Konflikte zu vermeiden.

Benutzung

Die xapi-URLs können prinzipiell in jedem Browser benutzt werden. Einfache Abfragen können aber mehrere MByte Daten produzieren, welche manche Browser in die Knie zwingen. Deshalb ist zu empfehlen Tools wie wget oder curl zu benutzen, um den Datenstrom direkt in eine Datei zu leiten. Beispiel: Folgende Anfrage speichert alle Krankenhäuser in der Datei data.osm:

 $ wget http://www.informationfreeway.org/api/0.6/node[amenity=hospital] -O data.osm

Achtung: curl kann Weiterleitungen nicht automatisch behandeln. Deshalb muss hier ein Server direkt angesprochen werden. Außerdem muss die Option -g angegeben, andernfalls würde [...] als Teil der Kommandozeile angesehen.

 $ curl -g http://www.informationfreeway.org/api/0.6/node[amenity=hospital] -o data.osm

Statistiken

Statistiken über den Inhalt der xapi-Datenbank: http://osmxapi.hypercube.telascience.org/total.xml. Diese werden tägliche aktualtisiert.

RSS Feed

Mit dem xapi-RSS-feed können Änderungen an Elementen, die auf der persönlichen Watchlist stehen, überwacht werden.

Jedes Element, welches mit watch:deineBenutzerId=1 (oder yes oder true) gekennzeichnet ist, wird von xapi überwacht. Jede Änderung an diesem Element, Löschung eingschlossen, wird im RSS-feed angezeigt. Überwachte Punkte können zu Kategorien gruppiert werden, indem der Wert das Watch-Tags auf einen Kategorie-Namen gesetzt wird. Z.B. watch:80n=churches fügt ein Element der Kategorie churches hinzu.

Um ein Element wieder von der Watchlist zu entfernen genügt es, die Kennzeichnung/das Tag vom entsprechenden Element zu löschen.

Um seine eigene Watchlist zu abonnieren, ist folgende URL zu benutzen:

 http://www.informationfreeway.org/api/0.6/watch/yourUserId

Beispiel:

 http://www.informationfreeway.org/api/0.6/watch/80n

Um eine bestimmte Kategorie zu abonnieren, muss an diese URL der Name dieser Kategorie angehängt werden. Beispiel:

 http://www.informationfreeway.org/api/0.6/watch/80n/churches

Anmerkungen:

Einschränkungen

Siehe auch

Personal tools
Namespaces
Variants
Actions
site
Toolbox