Das Utility “opaQuery.pl” ist in der Version 0.2 erschienen.
Funktional hat sich nichts geändert - wesentlich erweitert wurde der Hilfetext.
Enthalten ist jetzt eine Beschreibung der essentiellen QL-Sprachelemente.
Das Tool sollte somit “Out-Of-The-Box” benutzbar sein …
opaQuery.pl - OpenStreetMap - OverPass-Api-Query, Rel. 0.2 - 2012/07/14
Copyright (C) 2012 Klaus Tockloth <freizeitkarte@googlemail.com>
This program comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Benutzung
=========
perl opaQuery.pl "Overpass-QL-String"
Beispiel
========
perl opaQuery.pl "node ['name'='Gielgen'] (50.7, 7.1, 50.8, 7.2); out meta;"
Dateien
=======
opaQuery.Request.txt : Logdatei fuer die http-Anfrage
opaQuery.Response.xml : Logdatei fuer die xml-Antwort
opaQuery.cfg : Konfigurationsdatei
Overpass-QL - grundlegende Sprachelemente
-----------------------------------------
Initialisierung
===============
[out:xml] Ausgabe der Objekte im xml-Format (Default)
[out:json] Ausgabe der Objekte im json-Format
[timeout] maximale Verarbeitungsdauer im Server in Sekunden (Default: 180)
[maxsize:byte] maximaler RAM-Verbrauch im Server in Byte (Default: 512 MB; Max: 1024 MB)
Zu selektierender Objekttyp
===========================
node Knoten
way Linie
rel Relation
Selektion nach Schluesselwerten
===============================
['key' = 'value'] Uebereinstimmung gegeben
['key' != 'value'] Uebereinstimmung nicht gegeben
['key'] Schluessel vorhanden (Wert irrelevant)
['key' ~ 'RegExp'] regulaerer Ausdruck trifft zu
['key' !~ 'RegExp'] regulaerer Ausdruck trifft nicht zu
Logische Verknuepfungen
=======================
['key1' = 'value1'] ... ['keyN' = 'valueN'] logische Und-Verknuepfung
['key' ~ 'value1|value2| ... |valueN'] logische Oder-Verknuepfung
Zu betrachtender Datenbereich
=============================
(sued, west, nord, ost) rechteckige Box mit Koordinaten 'links unten + rechts oben'
(id) nur das Objekt mit angegebener ID
(user:'name') nur Objekte des Users 'name'
Behandlung der selektierten Objekte
===================================
out limit Ausgabe von maximal 'limit' Objekten (Default = keine Beschraenkung)
out Kurzform fuer: Ausgabe aller Objekte im xml-Format
Detaillierung der selektierten Objekte
======================================
ids nur Objekt-IDs
skel Objekt-IDs + enthaltene Objekte
body Objekt-IDs + enthaltene Objekte + Tags (Default)
meta Objekt-IDs + enthaltene Objekte + Tags + Metadaten
Sortierung der selektierten Objekte
===================================
asc Sortierung nach IDs (default)
qt Sortierung nach Quadtiles
Beispiele - einfache Datenabfragen
==================================
"[Initialisierung] ; Objekttyp [Selektion] (Datenbereich) ; Behandlung Detaillierung Sortierung ;"
"----------------- ; --------- ------------------ ---------------------- ; ---------- ------------- ---------- ;"
" node ['name'='Gielgen'] (50.7, 7.1, 50.8, 7.2) ; out meta ;"
"[out:json] ; node ['name'~'[gG]ielgen'] (50.7, 7.1, 50.8, 7.2) ; out meta ;"
"[timeout:200] ; node ['name'~'Gielgen$'] (50.7, 7.1, 50.8, 7.2) ; out 3 body qt ;"
" way (user:'toc-rox') ; out meta ;"
Beispiele - weitere Datenabfragen
=================================
"[out:json] [timeout:20]; node ['name'='Gielgen'] (50.7, 7.1, 50.8, 7.2); out meta;"
" way (user:'toc-rox') (50.7, 7.1, 50.8, 7.2); out meta;"
Rekursionsoperatoren bei Knoten und Linien (node, way)
======================================================
< Ausgabe aller Knoten, Linien und Relationen (nodes, ways, rels) in denen das Objekt vorkommt
> Ausgabe aller enthaltenen Knoten (nodes)
Rekursionsoperatoren bei Relationen (rel)
=========================================
<< Ausgabe aller Relationen (rels) in denen die Relation vorkommt
> Ausgabe aller enthaltenen Knoten und Linien (nodes, ways)
>> Ausgabe aller enthaltenen Knoten, Linien und Relationen (nodes, ways, rels)
Beispiele - Ausgabe der abhaengigen Objekte
===========================================
"(node (530904873); <;); out;" Knoten 530904873 und alle Objekte (ways, rels) in denen der Knoten vorkommt
"(way (42674611); <;); out;" Linie 42674611 und alle Relationen (rels) in denen die Linie vorkommt
"(rel (157770); <<;); out;" Relation 157770 und alle Relationen (rels) in denen die Relation vorkommt
Beispiele - Ausgabe der enthaltenen Objekte
===========================================
"(way (42674611); >;); out;" Linie 42674611 und alle Knoten (nodes) die darin enthalten sind
"(rel (62779); >;); out;" Relation 62779 und alle Knoten und Linien (nodes, ways) die darin enthalten sind
"(rel (62779); >>;); out;" Relation 62779 und alle Objekte (nodes, way, rels) die darin enthalten sind
Beispiel - vollstaendige (Karten-)Daten eines Bereichs abfragen
===============================================================
"(node (50.75, 7.15, 50.8, 7.2); <;); out meta;"
Objekte in der 'Naehe' eines Knoten abfragen
============================================
(around:radius) Objekte im Radius von n Metern selektieren
Beispiele - Objekte in der 'Naehe' abfragen
===========================================
"node (619332904); way (around:10000) ['name'~'Rostock']; out meta;"
"node (1794046057); way (around:1000) ['leisure'='playground']; out meta;"
Beispiele - zusammengesetzte Abfragen
=====================================
"(node ['amenity'='police'] (51, 6, 52, 7); way ['amenity'='police'] (51, 6, 52, 7);); out meta;"
"(way ['admin_level'='7'] ['name'] (50, 6, 52, 8); rel ['admin_level'='7'] ['name'] (50, 6, 52, 8);); out;"
Anmerkungen
===========
- siehe Sprachbeschreibung fuer weitere Features von Overpass-QL
- http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide
- die Abfrage der Metadaten ist als ressourcenintensiv anzusehen
- die Aufloesung von Relationen ist als ressourcenintensiv anzusehen
- die Objektsortierung nach 'qt' ist performanter als die nach 'asc'
- die Datenausgabe erfolgt immer in der Reihenfolge nodes, ways, rels
- die Attribute der einleitenden Initialisierung sind kombinierbar
Danke an “Roland Olbricht” und “user_5359” für die Qualitätssicherung.
Gruß Klaus