OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

Announcement

A fix has been applied to the login system for the forums - if you have trouble logging in please contact support@openstreetmap.org with both your forum username and your OpenStreetMap username so we can make sure your accounts are properly linked.

#1 2012-06-05 20:38:51

toc-rox
Member
From: Münster
Registered: 2011-07-20
Posts: 1,710
Website

Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

Im Rahmen des Projektes "Spielplätze in Münster" ist das Datenabfrage-Utility "opaQuery.pl" entstanden.
Das Utility nutzt für OSM-Datenabfragen das Overpass-API unter Verwendung der Abfragesprache "Overpass-QL".
Das Utility wird von der Kommandozeile aus benutzt und ist unter Linux, OS X und Windows lauffähig.

Funktionsweise:
vlkcN.png

Nutzung:
perl opaQuery.pl "Overpass-QL-String"

Beispiel:
perl opaQuery.pl "node ['name'='Gielgen'] (50.7,7.1,50.8,7.2); out meta;"

Weitere Details zum Utility finden sich hier:
http://www.easyclasspage.de/maptools/index.html

Vielleicht ist das Utility ja auch für den Einen oder Anderen von euch hilfreich.

Gruß Klaus

Link zur Beschreibung des Overpass-APIs:
http://wiki.openstreetmap.org/wiki/Overpass_API

Offline

#2 2012-06-06 04:23:05

Lübeck
Member
Registered: 2009-02-17
Posts: 2,412

Re: Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

Sieht sehr interessant aus !

Jan


Android 2.2 & 4.1.1 / Webkit 3.1 / PC: Win7 64bit

Offline

#3 2012-07-14 10:36:44

toc-rox
Member
From: Münster
Registered: 2011-07-20
Posts: 1,710
Website

Re: Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

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:sekunden]   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

Last edited by toc-rox (2012-07-14 10:58:49)

Offline

#4 2012-10-12 09:15:41

toc-rox
Member
From: Münster
Registered: 2011-07-20
Posts: 1,710
Website

Re: Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

Das Utility ist in der Version 0.4 verfügbar:

- Hilfetext überarbeitet / erweitert
- Präfix für Ergebnisdateien möglich

Gruß Klaus

Offline

#5 2018-01-29 20:07:50

tagtheworld
Member
Registered: 2012-04-25
Posts: 146

Re: Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

moin Klaus,

btw - die page mit den weiteren Details zum Utility

http://www.easyclasspage.de/maptools/index.html

ist leider abgeraucht, Schade um die Hilfstexte etc. etx


https://wiki.openstreetmap.org/wiki/User:Tagtheworld - interessiert an osm-themen insbes. in Verbindung mit den Sprachen, Perl, PHP, Python sowie den Datenbanken MySQL und Postgresql.

Offline

#6 2018-02-06 17:05:48

toc-rox
Member
From: Münster
Registered: 2011-07-20
Posts: 1,710
Website

Re: Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

Danke für den Hinweis ... die Webseite wurde allerdings schon im Oktober 2016 vom Netz genommen. opaQuery selbst stammt von Mitte 2012, also aus den Anfangstagen der Overpass-API. Da es generisch ist, läuft das Tool (opaQuery.pl - OpenStreetMap - OverPass-Api-Query, Rel. 0.4 - 2012/10/06) auch heute noch unverändert. Wer also im Batchverfahren Overpass-Daten benötigt ...

Die Inhalt der Webseite entspricht, bis auf einen einleitenden Satz, dem Hilfetext, den man erhält, wenn man das Tool ohne Parameter aufruft (perl opaQuery.pl).

PS: Wenn am Tool weiterhin Interesse besteht, könnte ich es (unveränert) nach GitHub/GitLab übertragen.

Offline

#7 2018-02-13 21:47:51

tagtheworld
Member
Registered: 2012-04-25
Posts: 146

Re: Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

hallo Klaus


Danke für die Antwort.

ja ich fänd es klasse wenn du das tool auf GitHub überträgst.

Viele Grüße
Martin


https://wiki.openstreetmap.org/wiki/User:Tagtheworld - interessiert an osm-themen insbes. in Verbindung mit den Sprachen, Perl, PHP, Python sowie den Datenbanken MySQL und Postgresql.

Offline

#8 2018-02-20 08:23:53

toc-rox
Member
From: Münster
Registered: 2011-07-20
Posts: 1,710
Website

Re: Kommandozeilen- / Batchgesteuerte OSM-Datenabfragen mit opaQuery.pl

Das Tool findet sich jetzt auf GitHub: https://github.com/Klaus-Tockloth/opaquery

Offline

Board footer

Powered by FluxBB