OSMDE009 OSM Talk: Die Overpass API

Overpass API logo 700px

Das Podcast-Team und unser Gast-Podcaster Stephan möchten uns mit dieser Spezialausgabe des Radio OSM aus dem Jahr 2012 verabschieden und wünschen allen Mappern einen guten Start in 2013. Wir möchten uns bei euch für das reichliche und hilfreiche Feedback bedanken und wünschen uns gleichzeitig noch mehr davon: Schreibt Kommentare oder eine E-Mail und kommt in den Live-Chat. Eure Nachrichten motivieren uns, weiter zu machen.

 

Briefkästen, Straßen, Abbiegevorschriften – wie diese bei OpenStreetMap erfasst und in die Datenbank eingetragen werden können, weiß der ambitionierte Mapper. Doch wie lassen sich solche Informationen gezielt wieder aus der Datenbank abfragen? In dieser Spezialausgabe des deutschen OpenStreetMap-Podcasts sprechen wir mit Roland Olbricht, dem Entwickler der Overpass API, die solche gezielten Abfragen ermöglicht und inzwischen eine wichtige Rolle für viele Programme und Dienste spielt. Roland gewährt uns dabei auch Einblicke darüber, was die “Maschinisten” des OpenStreetMap-Universums, also unsere Softwareentwickler, momentan bewegt und motiviert.

Während das erste Drittel dieser Podcast-Episode so allgemeinverständlich wie möglich gehalten wurde und auch von interessierten und nicht-programmierenden Mappern verstanden werden kann, richten sich die letzten zwei Drittel dieser Podcast-Folge an die Technikverrückten unter euch und auch an Softwareentwickler. Wer bei “augmented diffs”, “64 Bit Node Ids”, “Federated Databases”, “Permanente IDs”, “dynamische Tagging-Bereinigung” oder auch “Änderungsvisualisierungen” leuchtende Augen bekommt, sollte daneben auch auf keinen Fall das letzte Drittel dieser Folge verpassen.

Links:

Music by Dan-O at DanoSongs.com
http://danosongs.com/danosongs.com-license.pdf (Title: Remember how it started)

avatar Stephan Team

Podcastteam

Das Podcastteam Andi, Marc und Michael wünscht viel Spaß beim Hören.


  1. Thomas Rupprecht

    Der Link vom Postbox Guesstimator ist falsch. Da ist ein Leerzeichen zuviel.
    Richtig: http://osmbonnblog.blogspot.de/2010/06/der-post-box-guesstimator-wo-fehlen.html

  2. Dann werde ich hier gleich mein Projekt vorstellen.
    Ich arbeite zur Zeit an einer “openfiremap” auf Vektor-Daten Basis. Hierzu hole ich mir alle nötigen Daten über die Overpass-API.

    Projekt: https://github.com/Soldier-Boy/firemap/
    Demo: http://rfmtc.no-ip.org/osm/firemap/

    Bei Fragen, Anregungen, Verbesserungsvorschlägen einfach eine Email an: soldierboy2000@gmail.com

    • Roland

      Super. Das sieht schon sehr gut aus. Ich sehe allerdings auch, dass es noch viele Hydranten gibt, die man in Troisdorf eintragen könnte :)

  3. Klasse Bericht,

    der Link zum Blogeintrag über die Overpass API am 25.juni 2012 wäre nochzur Ergänzung interessant.
    Auch die anderen Podcasts sin immer sehr intressant.
    Ich höre sie mehrfach bei der Bahnfahrt zur und von der Arbeit.
    Beim durchstöbern der Links ist mir allerdings als etwas unpraktisch aufgefallen, das die verlinkten Seiten nicht in einem neuen Tab aufgehen. Das wäre praktisch da ich beim verfolgen der Links oft Kilometer weit von der Podcastseite abkomme und sodann immer die Podcastseite wieder eintippen müsste. (gehe mittlerweile immer automatisch über link in neuen Tab öffnen)
    Was mich sehr gefreut hat das das Roland aus Wuppertal kommt wo ich auch wohne und auch einiges gemappt habe.

    Gruß
    Michael
    OSMuser bilderhobbit

  4. Andreas

    Hallo,

    vielen Dank für diesen tollen Podcast! Ich höre gerne rein – auch wenn ich teilweise nur Bahnhof verstehe… (wenn es allzu technisch wird). Klaase finde ich auch die Idee, direkt Links zu den angesprochenen Themen aufzuschreiben.
    Eine Frage habe ich aber trotzdem: Am Anfang des Podcasts wird davon gesprochen, dass es sogenannte “Kapitel Marker” gibt die mit “entsprechender Software” anwählbar sind. Wie realisiert ihr das mit einer normalen MP3-Datei? Welche Software braucht man dafür? Ich nutze einen alten iPod Nano 4GB … da geht es z.B. nicht.
    Evtl. könnte man für derartig alte Hardware ja auch den “COMMENT” Tag der MP3 Datei nutzen. So könnte man mittels eines derartigen Inhaltsverzeichnisses zumindest manuel zu den einzelnen Kapiteln vorspulen.

    Danke für diesen schönen Podcast! Ich hoffe, dass ich das nächste Mal via IRC live dabei sein kann (Tolle Idee die Termine direkt in Google-Kalender importieren zu können).

    Grüße,
    Andreas

  5. karlos

    Lang, aber gut, der Podcast. auch wenn die Technik in Details abtaucht, ich werde immer motiviert vom Höhren. Sicher könnte man OverPass auch für einen Touchdevice-Editor nutzen.

    • Roland

      Ja, die Overpass API wäre dabei ein nützlicher Baustein.

      Allerdings gibt es da auch sehr viele andere Aufgaben zu lösen, vor allem eine gute Benutzerschnittstelle, um auf den kleinen Bildschirmen die doch vielen relevanten Informationen anzuzeigen, und angepasste Eingabemöglichkeiten für Touch. Von daher befürchte ich, dass das nicht mal eben geht. Wie gut schlagen sich denn die bestehenden Touch-Editoren, z.B. Vespucci?

  6. Klasse Podcast! Mir ging es ganz ähnlich und ich habe zum Teil nix verstanden. Aber warum nicht auch mal was hören von dem man NULL Ahnung hat. Dümmer wird man schließlich nicht dabei ;)

  7. Peter

    Hallo Roland,

    Jetzt bin ich auch mal dazu gekommen, den Podcast in seiner vollen Länge zu hören. Zunächst muss ich sagen, dass ich beeindruckt bin, wie lässig du über deine großartige Leistung sprichst. Darunter verstehe ich nicht nur das Entwickeln einer so gradlinigen Lösung (aka die Datenbank kann nicht was ich möchte, also bau ich mir halt ne eigene), sondern auch das dauerhafte betreiben des Services.

    Was deine Verwirrung bzgl. der Index-Sortierten Ablage angeht, kann ich denke ich Licht ins Dunkel bringen: Zumindest MySQL InnoDB bietet das Feature Index geordneter Daten implizit an: InnoDB legt alle Daten nach Primärschlüssel sortiert auf der Festplatte ab [1]. Für MyISAM gibt es eine solche Funktion nicht. In PostgreSQL gibt es das CLUSTER Statement [2], welches eine einmalige Reordnung der Daten nach sich zieht.

    Insgesammt entspricht das Konzept der TemplateDB in recht großen Zügen dem von InnoDB (für mehr Details möchte ich auf eine sehr gute Schulung von Oli Sennhauser zum Thema MySQL Performance hinweisen – Oli ist im Übrigen auch Mapper [4]). In InnoDB werden 16k Blöcke verwaltet und nach Bedarf in einen Memory-Pool geladen. Dabei verlässt man sich weniger auf den Betriebssystem-Cache, weil MySQL genauer weiß, welche Daten grade “hot” sind, als das OS, wie Stephan ja auch schon andeutete.

    Lg, Peter

    [1] http://dev.mysql.com/doc/refman/5.1/en/innodb-index-types.html
    [2] http://www.postgresql.org/docs/9.1/static/sql-cluster.html
    [3] http://www.linuxhotel.de/kurs/mysql-performance/
    [4] http://www.openstreetmap.org/user/Oli%20Sennhauser

    • Roland

      Hallo Peter,

      danke für die Informationen. Das ist in der Tat das Feature, das ich gesucht habe. Und bei MySQL habe ich in der Tat nur bei MyISAM gesucht.

      Insbesondere die Links sind hilfreich.

      Viele Grüße,

      Roland

    • Peter

      Hi Roland,

      anzumerken wäre noch, dass InnoDB keine geometrischen Indizes kann, seit MySQL-Version 5.0.16 aber sehr wohl geometrische Datentypen und Funktionen [1]. Wenn du den Primärschlüssel also über eine Raumfüllende Kurve oder einen QuadTile-Index selbst baust, kannst du komplexere Operationen wie z.B. Intersect oder Contains von der Datenbank berechnen lassen.

      Lg, Peter

      [1] http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html

  8. Dieter

    Sehr interessant, aber ich konnte im mittleren Teil nicht mehr folgen. Hätte gerne mal an einem einfachen Beispiel meine Versuche gemacht. Die Abfragen sollten dann auf eine Karte dargestellt werden (OpenLayers?). Gibt es dazu eine Anleitung? Welchen Editor benutzt man?
    Gruß Dieter

    • Peter

      Hallo Dieter,
      für einfache Experimente kannst du das untere Formular auf http://overpass-api.de/query_form.html benutzen. Wenn du als Ausgabe-Option “to OpenLayers auto-centered overlay” wählst, kannst du die Ergebnisse direkt ansehen.

      Beispielsweise wird aus
      node[name="Gau-Odernheim"]; out;

      http://overpass-api.de/api/convert?data=node%5Bname%3D%22Gau-Odernheim%22%5D%3B+out%3B&target=ol_fixed

      Oder um meine Wohnstraße zu finden:
      node[name="Gau-Odernheim"];
      (
      way(around:1000)[name~"^Gustav-Heinemann"];
      >;
      );
      out;

      Was dann so ausschaut:
      http://overpass-api.de/api/convert?data=node%5Bname%3D%22Gau-Odernheim%22%5D%3B%28++way%28around%3A1000%29%5Bname~%22%5EGustav-Heinemann%22%5D%3B++%3E%3B%29%3Bout%3B&target=ol_fixed

      Lg, Peter

    • Roland

      Wie schon von Peter erwähnt, habe ich zum Experimentieren
      http://overpass-api.de/query_form.html
      eingerichtet. Dort können Abfragen direkt in Karten umgesetzt werden.

      Peter hat auch gleich zwei durchaus fortgeschrittene Beispiele für einzelne Objekte gegeben.

      Ein halbwegs typisches Beispiel für viele Objekte ist die Anzeige von Schulen:

      node[amenity=school];out;

      in das Feld “Overpass API Convert Form”, “to OpenLayers slippy overlay” wählen und dann “Convert” klicken.

      Das wählt alle Nodes aus, die ein Tag “amenity=school” haben. Je nach Dichte werden die Objekte ab verschiedenen Zoomstufen sichtbar, da bei sher vielen Fundstellen sonst leider der Browser abstürzt (mein Firefox und Chrome ab etwa 2000 Objekten). Rund um Bonn werden ab etwa Zoomlevel 12 Objekte angezeigt.

      Das sind aber bei weitem nicht alle Schulen, und das liegt daran, dass einige Schulen als Nodes, andere als Ways getaggt sind. Wir müssen daher noch die Abfrage anpassen:

      (node[amenity=school];way[amenity=school];>;);out;

      Das sucht jetzt außer Nodes auch nach Ways mit dem Tag sowie den Nodes, auf die der Way verweist. Diese Nodes brauchen wir, damit die Ways auch angezeigt werden.

      Die fertige HTML-Seite lässt sich einfach abspeichern und weiterverwenden. Die Abfrage steht dort im JavaScript-Quellcode (Textsuche nach “school”), nach CGI-Standard kodiert, damit sie von allen Browsern korrekt abgesetzt wird.

    • Dieter

      Danke für die Hilfe, so habe ich doch einen Zugang gefunden. Meine erste sinnvolle Abfrage war:
      (way[noexit=yes];>;);out;
      Es wurden gleich 600 features in meiner Stadt gefunden (gut es war die Hauptstadt).
      noexit auf Wegen sollte es eigentlich gar nicht geben, der node am Ende des Weges kann mit noexit=yes gemapped sein. Dabei waren auch boundarys, Wasserwege und railways. Letztere kann man mit railway=buffer_stop mappen.
      Praktisch ist bei einem Podcast, das man auch zurück spulen kann und dann beim nächsten mal etwas mehr versteht.
      Ich habe aber noch nicht herausgefunden, wie man die beschriebenen Wege als Datei erhält, um sie anschließend im JOSM zu öffnen. Dann wäre es möglich es sich genauer anzusehen und zu korrigieren.
      Lg Dieter

      • Peter

        Hi Dieter,

        man sieht an der “fehlerhaften” Erfassung aber eins schön: wenn man nicht genau weiß wie, lieber irgendwas dran schreiben als nichts. So kannst du zumindest erkennen, was der ursprüngliche Mapper meinte.

        Bezüglich JOSM kannst du das obere Eingabefeld auf der genannten Seite benutzen und aus dem out; ein out meta; machen. Mein Browser bietet mit dann eine Datei “interpreter” zum Download an. Wenn du diese Datei umbenennst und “.osm” anhängst, kannst du sie danach in JOSM öffnen.

        Lg, Peter

    • Roland

      Alternativ: Wähle in JOSM “Adresse öffnen …” und gebe dort
      http://overpass-api.de/api/interpreter?data=(waynoexit=yes(52.3,13.0,52.7,13.8);>;);out meta;
      ein. Dabei sind die Koordinaten eine großzügige Bounding Box um Berlin, zwischen Breitengraden 52.3 und 52.7 sowie Längengraden 13.0 und 13.8. JOSM lädt dann die gewünschten Daten.

    • Roland

      Entschuldigung, ich habe den Link vermurkst (muss in eine Zeile):
      http://overpass-api.de/api/interpreter?data=(waynoexit=yes(52.3,13.0,52.7,13.8);>;);out meta;

    • Roland

      WordPress scheint eckige Klammern nicht zu mögen …
      http://overpass-api.de/api/interpreter?data=(way[noexit=yes](52.3,13.0,52.7,13.8);>;);out meta;

  9. Stephan

    Hallo,

    vielen Dank für die bisherigen Rückmeldungen und den Zuspruch! Das motiviert doch! :-) Ich habe auch einiges gelernt, was ich bei einem zukünftigen OSM Talk verbessern könnte. Interessant fand ich Andreas’, Kallischmanns und Dieters Rückmeldung, dass sie im mittleren Teil nicht mehr folgen konnten. Da ging es um die Overpass Abfragesprache. Ich denke, Dieters Anregung ist da genau richtig: In solchen eher technischen Abschnitten eines Gespräches mehr konkrete Beispiele bringen oder direkt an einem anschaulichen Beispiel entlangarbeiten.

    Gruß,
    Stephan

    • Roland

      Hallo,

      an Stephan kann ich mich nur anschließen: danke für die Rückmeldungen und den Zuspruch! Es hat sehr viel Spaß gemacht, mit Stephan die Folge aufzunehmen (und lecker grünen Tee gegeben).

      Was die sehr technischen Abschnitte angeht: ich befürchte eher, dass Sonderzeichen-Syntax für das Medium Radio sehr ungünstig ist. Ein Beispiel durchzuarbeiten kann gut sein, weil dann zumindest das Beispiel erklärt wird. Aber dann verfehlt man die Hörer, die genau von einem anderen Beispiel profitiert hätten.

      Ich denke, Dinge aufzuzuählen, für die die Overpass API schon verwendet worden ist und diese dann z.B. auf der Wiki-Seite
      http://wiki.openstreetmap.org/wiki/DE:Overpass_API
      zu sammeln ist nun die beste mögliche Idee, weil man dort auch dröge technische Details und Syntax-Subtilitäten unterbringen kann.

      Viele Grüße,
      Roland

    • Tirkon

      Um möglichst nicht nur Programmierer sondern auch Mapper beim Gebrauch der Overpass API mitzunehmen, empfände ich es als sinnvoll, die ersten Beispiele so zu wählen, dass man das Ergebnis optisch auf einer Karte präsentiert bekommt. Als weitere Möglichkeit könnte man die Abfragen aus JOSM heraus machen. Das kennen zumindest die fortgeschrittenen Mapper. Auch dort bekommen sie das Ergebnis in einer ihnen bekannten Art präsentiert. Zudem können sie am selektiven Ergebnis weiter arbeiten und dann hochladen. Das würde die Mapper endlich in die Lage versetzen, den Grundsatz “Relationen sind keine Kategorien” zu befolgen. Denn bisher waren diese eigentlich verbotenen Kategorien-Relationen die einzige Möglichkeit für diesen Personenkreis, eine Auswahl in JOSM downloadbar zu machen.

      Das von Stephan erwähnte Entlanghangeln anhand von Beispielen ist auch eine Form, die ich jetzt auch für die Einleitung zur Overpass API im deutschen Wiki gewählt habe:
      http://wiki.openstreetmap.org/wiki/DE:Overpass_API
      Dieser Weg hatte sich schon bei dem Vermitteln eines Grundverständnis für Relationen bewährt:
      http://wiki.openstreetmap.org/wiki/Einf%C3%BChrung_Relationen

      Nichtsdestotrotz: Großartiger Podcast!

      Grüße
      Tirkon

  10. Auch von meiner Seite ein großes Dankeschön für diesen Podcast!
    Den “mirrored Download” in JOSM hatte ich zwar entdeckt, aber bisher nicht weiter beachtet. Mittlerweile habe ich ihn oft genutzt und als Standard eingerichtet.
    Vorteile:
    *schneller
    *Flächenbeschränkung beim Download entfällt
    *Download von Objekten mit ausgewähltem Tag möglich

  11. PS: Standard wie Standard-Shortcut für den Download von Daten. Leider gibt es da noch ein Problem: https://josm.openstreetmap.de/ticket/8340

    PPS @ Michael: Links mit Mittelklick öffnen. In jedem anständigen Browser erzeugt das einen neuen Tab.

  12. Glad

    Auch von mir vielen Dank für den Podcast. Wie immer überzeugte die technische Qualität. Beeindruckt bin ich über die Flüssigkeit des Interviews. Ein Gespräch über mehr als 2 Stunden, ohne dass der Interviewer nach Fragen suchen muss. Das spricht für eine gute Vorbereitung oder viel Routine.

    “Zu viel Technik” ist m.E. der falsche Ausdruck. Schließlich wurde fast ausschließlich über die Handhabung des Programms gesprochen. Ein Audiofile erzählt nur über die Möglichkeiten. Es ist einfacher, die Beispiele später auszuprobieren, als sie während des Hörens nachzuvollziehen. “Viel Technik” wäre gewesen, wenn über die Art der C++-Programmierung gesprochen worden wäre.

    Wie schon beim Interview mit dem “Troisdorfer” ist es immer wieder schön, etwas über die Menschen zu erfahren, die unsere Gesellschaft reicher machen.

  13. christian

    Sehr interessanter Podcast. Danke!

    Mir war der Podcast keineswegs zu technisch, mir wär es durchaus Recht, wenn es teilweise noch genauer ins Detail gegangen wäre.

  14. Theodin

    Bin erst jetzt dazu gekommen, diesen langen aber interessanten Podcast zu hören.
    Ich habe die Overpass öfters mal genutzt, um Tagbereinigungen zB bei Einbahnstraßen zu machen. Und da war ich schon erstaunt, wie schnell die Suche auch weltweit ist. Echt klasse!

    Bezüglich der Locale-me-Seite:
    Klasse. Hab ich gleich gespeichert. Bei den POIs Essen und Einkaufen wäre je ein Unterpunkt “Alles” schön für den Fall, das es mir egal ist, welches Restaurant ich besuche.
    Vielleicht könnte man auch noch die internatonale mapnik-Karte als Möglichkeit neben der Deutschen einbinden?

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht.