Overpass API: Unterschied zwischen den Versionen

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
K (Verschiedene)
K
 
(66 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Overpass API - Selektiver Download von Daten aus der Hauptdatenbank von [[OpenStreetMap]].
+
'''Overpass API - Gefilterter Download von [[OpenStreetMap]]-Daten in der nativen Struktur Nodes, Ways, Relations.'''
  
Siehe auch [[HowTo OpenStreetMap]]
+
Overpass Turbo Services (interaktive Webapp): '''>> Weltweit: http://overpass-turbo.eu/ <<''', Schweiz: http://overpass-turbo.osm.ch/ , Deutschland: http://overpass-api.de/
  
Webseiten:  
+
Overpass QL Query Beispiele:  
* Overpass API (Dokumentation und öff. Server): http://overpass-api.de/ und http://wiki.openstreetmap.org/wiki/Overpass_API
+
* >> '''[[Overpass QL Beispiele]]''' <<
* Overpass Turbo (Webapp/Server): http://overpass-turbo.eu/
+
* Overpass API by Example: https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example
 +
* https://osm-queries.ldodds.com/for-local-mappers/index.html
  
== Beispiele ==
+
Prompt für '''>> ChatGPT & Co. <<''' (Copy & Paste und ersetze "user query"):
  
=== Verschiedene ===
+
<pre>
 +
Convert the following natural language query into valid Overpass QL syntax for use on [Overpass Turbo](https://overpass-turbo.eu/):
  
;"Rollstuhlparkplätze der Schweiz": siehe [[Nutzen von OpenStreetMap-Daten in GIS]].
+
**Natural Language Query:**
 +
<<Insert user query here>>.
  
;Pizzerias der Schweiz:
+
**Requirements:**
PostGIS-Terminal (Schweiz):
+
1. The generated Overpass QL query must adhere to this [EBNF specification](https://gist.githubusercontent.com/sfkeller/43800cd64014d17c55e40fa5e877fd6a/raw/3410bd8817e47c86e5695388a96ba1db5c0630a7/Overpass_QL_EBNF_v0.2_ChatGPT_generated.txt).
  SELECT ST_AsText(way) geom, name AS label
+
2. Ensure the use of appropriate tags (with both key and value) sourced from the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/DE:How_to_map_a) and from [Beautified JOSM presets](https://raw.githubusercontent.com/simonpoole/beautified-JOSM-preset/master/master_preset.xml) to align with the user's intent.
  FROM osm_poia
+
3. Prefer geocoding with `geocodeArea` for region-specific queries rather than `area["name"=...]` unless unless a relation, an OSM Id or a geographic wikidata item is given.
  WHERE tags @> hstore('cuisine', 'pizza')
+
4. Use `nwr` to cover nodes, ways and relations, unless the query requires distinct nodes, ways, or relations.
 +
5. Prefer JSON output with `out center` (center coordinates) over `out geom` unless there are no nodes involved.
 +
</pre>
  
Overpass Query aller Pizzerias der Schweiz (mit BBox):
+
* Beispiele für erfolgreiche "user queries":
  <osm-script>
+
** All restaurants including fast_food in Rapperswil-Jona
    <union>
+
** All bars around 3000 meters from the adress "Bahnhof Rapperswil-Jona"
      <query type="node">
+
** All restaurants within 3000 meters of a public stop in of Switzerland
        <has-kv k="cuisine" v="pizza"/>
+
** All restaurants in Kanton Glarus within 200 meters of public transport stops (station, bus_stop, tram_stop, funicular)
        <bbox-query e="10.5194091796875" n="47.92738566360356" s="45.45627757127799" w="5.69091796875"/>
 
      </query>
 
      <query type="way">
 
        <has-kv k="cuisine" v="pizza"/>
 
        <bbox-query e="10.5194091796875" n="47.92738566360356" s="45.45627757127799" w="5.69091796875"/>
 
      </query>
 
      <recurse type="way-node"/>
 
    </union>
 
    <print/>
 
  </osm-script>
 
  
Overpass Query aller Pizzerias der Schweiz (mit effektiven Grenzen):
+
* Beispiele für nicht erfolgreiche "user queries": Mountain passes of Switzerland which are navigable with a lake nearby" - siehe [[Overpass QL Beispiele]].
  <osm-script output="json">
 
    <union>
 
      <!-- define restricted search area switzerland -->
 
      <query type="area">
 
        <has-kv k="boundary" v="administrative"/>
 
        <has-kv k="admin_level" v="2"/> <!-- alternative: admin_level=4 for canton -->
 
        <has-kv k="name:en" v="Switzerland"/>
 
      </query>
 
      <!-- get nodes tagged as Pizzerias -->
 
      <query type="node">
 
        <area-query/> <!-- apply area restriction defined before -->
 
        <has-kv k="cuisine" v="pizza"/>
 
      </query>
 
      <!-- define again restricted search area switzerland -->
 
      <query type="area">
 
        <has-kv k="boundary" v="administrative"/>
 
        <has-kv k="admin_level" v="2"/> <!-- alternative: admin_level=4 for canton -->
 
        <has-kv k="name:en" v="Switzerland"/>
 
      </query>
 
      <!-- get ways/areas tagged as Pizzerias -->
 
      <query type="way">
 
        <area-query/> <!-- apply area restriction -->
 
        <has-kv k="cuisine" v="pizza"/>
 
      </query>
 
      <recurse type="way-node"/>
 
    </union>
 
    <print/>
 
  </osm-script>
 
  
=== Beispiel Eisenbahnschienen ===
+
Einstieg in Overpass QL und API:
 +
* >> '''"Offizielles" Handbuch zur Overpass API: https://dev.overpass-api.de/overpass-doc/de/ <<'''
 +
* "Learn Overpass": http://osmlab.github.io/learnoverpass//en/
 +
* Getting Started with Overpass Turbo (2020): https://nixintel.info/osint-tools/getting-started-with-overpass-turbo-part-1/
 +
* Tutorial: https://osm-queries.ldodds.com/tutorial/index.html
 +
* Blog: https://dev.overpass-api.de/blog/
  
Eisenbahnschienen (inkl. Schmalspur) in der Gegend von Rapperswil.
+
Overpass QL Language Documentation:
 +
* http://wiki.osm.org/wiki/Overpass_API
 +
* https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL
 +
* https://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide
 +
* [[Overpass API EBNF]] (experimental)
  
Diskussion:
+
Support:
* Die BBox-Werte für Osten müssen größer sein als für Westen und genauso die Werte für Norden größer als für Süden. Also: s<n und w<e, sortiert als s,w,n,e (Rapperswil: 47.213,8.704,47.336,8.905).
+
* Mailing list: http://listes.openstreetmap.fr/wws/info/overpass
* '<nowiki>{{bbox}}</nowiki>' ist eine Variable im Overpass Turbo (funktioniert im Overpass Service natürlich nicht).  
+
* https://help.openstreetmap.org/questions/20479/using-osm-data-with-javascript-via-api-in-my-code-display-data-as-text
* 'recurse' löst Referenzen von Ways zu Nodes auf (warum auch immer 'recurse' (und nicht z.B. dereference) da dies ja nur einstufig ist?)
 
* 'union' fasst Ergebnismengen von Anfragen zusammen - auch wenn's im Falle von recurse nur eine ist (...?) (OR-Verknüpfung)
 
* 'print' gibt die Sache aus (warum auch immer print gewählt wurde, da dies ja nichts mit der Konsole zu tun hat... Warum nicht 'format='?)
 
  
XML:
+
Siehe auch:
  <osm-script timeout="900">
+
* [[OSM-Technisches]]
    <union>
+
* [[HowTo OpenStreetMap]]
      <query type="way">
+
* [https://stackoverflow.com/questions/tagged/overpass-api Stackoverflow 'overpass-api']
        <has-kv k="railway" v="rail"/>
 
        <bbox-query <nowiki>{{bbox}}</nowiki>/>
 
      </query>
 
      <recurse type="way-node"/>
 
      <query type="way">
 
        <has-kv k="railway" v="narrow_gauge"/>
 
        <bbox-query <nowiki>{{bbox}}</nowiki>/>
 
      </query>
 
      <recurse type="way-node"/>
 
    </union>
 
    <print/>
 
  </osm-script>
 
 
 
QL:
 
  [timeout:900];
 
  (
 
    way
 
      ["railway"="rail"]
 
      (47.213,8.704,47.336,8.905);
 
    node(w);
 
  );
 
  out;
 
 
 
Kompakte QL:
 
* <nowiki>http://www.overpass-api.de/api/interpreter?data=(way["railway"="rail"](47.213,8.704,47.336,8.905);node(w););out;</nowiki>
 
* http://www.overpass-api.de/api/interpreter?data=(way%5B%22railway%22%3D%22rail%22%5D(47.213%2C8.704%2C47.336%2C8.905)%3Bnode(w)%3B)%3Bout%3B%0A
 
 
 
Alternative: XML mit Regex:
 
 
 
  <osm-script timeout="900">
 
    <union>
 
      <query type="way">
 
        <has-kv k="railway" regv="^(rail|narrow_gauge)$"/>
 
        <bbox-query s="47.213" w="8.704" n="47.336" e="8.905"/>
 
      </query>
 
      <recurse type="way-node"/>
 
    </union>
 
    <print/>
 
  </osm-script>
 
 
 
XML mit Negation und Regex:
 
 
 
  <osm-script timeout="900">
 
    <union>
 
      <query type="way">
 
        <has-kv k="railway" modv="not" regv="rail|narrow_gauge"/>
 
        <bbox-query s="47.213" w="8.704" n="47.336" e="8.905"/>
 
      </query>
 
      <recurse type="way-node"/>
 
    </union>
 
    <print/>
 
  </osm-script>
 
  
 
[[Kategorie:Howto]]  
 
[[Kategorie:Howto]]  
 
[[Kategorie:OpenStreetMap]]
 
[[Kategorie:OpenStreetMap]]
 +
[[Kategorie:Overpass]]

Aktuelle Version vom 22. September 2024, 22:40 Uhr

Overpass API - Gefilterter Download von OpenStreetMap-Daten in der nativen Struktur Nodes, Ways, Relations.

Overpass Turbo Services (interaktive Webapp): >> Weltweit: http://overpass-turbo.eu/ <<, Schweiz: http://overpass-turbo.osm.ch/ , Deutschland: http://overpass-api.de/

Overpass QL Query Beispiele:

Prompt für >> ChatGPT & Co. << (Copy & Paste und ersetze "user query"):

Convert the following natural language query into valid Overpass QL syntax for use on [Overpass Turbo](https://overpass-turbo.eu/):

**Natural Language Query:**
<<Insert user query here>>.

**Requirements:**
1. The generated Overpass QL query must adhere to this [EBNF specification](https://gist.githubusercontent.com/sfkeller/43800cd64014d17c55e40fa5e877fd6a/raw/3410bd8817e47c86e5695388a96ba1db5c0630a7/Overpass_QL_EBNF_v0.2_ChatGPT_generated.txt).
2. Ensure the use of appropriate tags (with both key and value) sourced from the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/DE:How_to_map_a) and from [Beautified JOSM presets](https://raw.githubusercontent.com/simonpoole/beautified-JOSM-preset/master/master_preset.xml) to align with the user's intent.
3. Prefer geocoding with `geocodeArea` for region-specific queries rather than `area["name"=...]` unless unless a relation, an OSM Id or a geographic wikidata item is given.
4. Use `nwr` to cover nodes, ways and relations, unless the query requires distinct nodes, ways, or relations.
5. Prefer JSON output with `out center` (center coordinates) over `out geom` unless there are no nodes involved.
  • Beispiele für erfolgreiche "user queries":
    • All restaurants including fast_food in Rapperswil-Jona
    • All bars around 3000 meters from the adress "Bahnhof Rapperswil-Jona"
    • All restaurants within 3000 meters of a public stop in of Switzerland
    • All restaurants in Kanton Glarus within 200 meters of public transport stops (station, bus_stop, tram_stop, funicular)
  • Beispiele für nicht erfolgreiche "user queries": Mountain passes of Switzerland which are navigable with a lake nearby" - siehe Overpass QL Beispiele.

Einstieg in Overpass QL und API:

Overpass QL Language Documentation:

Support:

Siehe auch: