NL:Overpass turbo/Wizard

From OpenStreetMap Wiki
Jump to navigation Jump to search
Overpass API logo.svg
edit
Overpass API · Language reference · Language guide · Technical terms · Areas · Query examples · Sparse Editing · Permanent ID · FAQ · meer (Nederlands) · Web site
Servers status · Versions · Development · Technical design · Installation · XAPI compatibility layer · Public transport sketch lines · Applicaties · Source code and issues
Overpass turbo · Wizard · Overpass turbo shortcuts · MapCSS stylesheets · Export to GeoJSON · meer (Nederlands) · Development · Source code and issues · Web site
Overpass Ultra · Overpass Ultra extensions · MapLibre stylesheets ·meer (Nederlands) · Source code and issues · Web site
1. Selecteer de Wizard vanaf de werkbalk
2. Voer in wat u wilt ophalen
3. Druk op de knop
4. Geniet van het resultaat

Doel

Het schrijven van Overpass query's kan soms nogal een vervelend, herhalend werkje zijn dat op de eerste plaats kennis vereist van de querytaal van Overpass. Overpass turbo's Query Wizard helpt u door het converteren van eenvoudige, door mensen te lezen zoektermen naar functionerende query's voor Overpass. Hier is een voorbeeld: Het verkrijgen van alle drinkwaterfonteintjes vergt niet meer dan het starten van de Wizard en de toepasselijke tag amenity=drinking_water in te voeren, in plaats van het schrijven van een meerregelige query voor Overpass.

De syntaxis die de Wizard begrijpt is geïnspireerd op JOSM's search/filterfuncties. Een zoekactie bestaat uit individuele filteruitdrukkingen, bijvoorbeeld key=value (voor een eenvoudige zoekactie op een tag) of type:node (om het resultaat te beperken tot alleen knopen). Deze kunnen worden gecombineerd met logische bewerkingen als and of or. Bekijk de volgende voorbeelden eens:

  • tourism=hotel
  • amenity=drinking_water and type:node
  • (highway=primary or highway=secondary) and type:way

Standaard worden de gegevens gezocht in de huidige kaartweergave. Maar de Wizard begrijpt ook enkele andere filters voor een locatie. Hier is een voorbeeld van een zoekactie in een bepaalde stad:

  • tourism=museum in Vienna

Zoeken op tags

selectie omschrijving
key=value

key==value

Komt overeen met objecten die een tag hebben met de sleutel key en de waarde value.
key:valuefragment Komt overeen met objecten die een tag hebben met de sleutel key en waarvan de waarde de tekenreeks valuefragment bevat.
key~regex

key~=regex
key like regex

Komt overeen met objecten die een tag hebben met de sleutel key en wwaarvan de waarden overeenkomen met de reguliere expressie regex.
~keyregex~regex

~keyregex~=regex

Komt overeen met objecten die een tag hebben met de sleutel die overeenkomt met de reguliere expressie keyregex en wwaarvan de waarde overeenkomt met de reguliere expressie regex.
key=*

key==*
key is not null

Komt overeen met objecten die een tag hebben met de sleutel key.
key!=value

key!==value

Komt overeen met objecten die geen tag hebben met de sleutel key en de waarde value.
key!~regex

key not like value

Komt overeen met objecten die een tag hebben met de sleutel key en waarvan de waarde niet overeenkomt met de de reguliere expressie regex.
key!=*

key!==*
key is null

Komt overeen met objecten die geen tag hebben met de sleutel key.

Als een tekenreeks (bijvoorbeeld de value van een van bovenstaande tag-selecties) witruimte of andere speciale tekens bevat (zoals dubbele punten, streepjes, niet-ASCIItekens, etc.) moet hij worden omsloten door dubbele aanhalingstekens:

  • name="New York"
  • "addr:housenumber" = *

Reguliere expressies kunnen worden opgegeven als platte tekst als ook in de welbekende notatie van regex:

  • ref ~ "[0-9]+"
  • name ~ /street$/i (de aanpassing i maakt dat de overeenkomst geen verschil maakt tussen Hoofd- en kleine letters)

Intelligente Wizard

In plaats van zoekacties op tags, kunt u ook alleen filteren op objectcategorieën. U kunt bijvoorbeeld de termen Hotel, "Drinking Water", Hospital, etc. gebruiken in plaats van de corresponderende tags. Dit werkt voor alle objecten waarvoor een voorkeuze is gedefinieerd in de iD editor.

Filters voor Metadata

selectie omschrijving
type:osm-type Komt overeen met objecten van het type osm-type (node, way of relation).
id:osm-id Komt overeen met objecten die de ID osm-id hebben.
user:osm-user Komt overeen met objecten die het laatst werden aangepast door de gebruiker osm-user.
uid:osm-uid Komt overeen met objecten die het laatst werden aangepast door een gebruiker met de gebruikers-ID osm-uid.
newer:date Komt overeen met objecten die meer recent zijn toegevoegd of bewerkt dan date.

De parameter date voor de newer selectie mag ofwel een ISO 8601 tijdreeks (bijv. "2013-11-24T19:01:00Z") zijn of een relatieve datum die de relatieve hoeveelheid tijd in het verleden aangeeft:

  • newer:1day (selecteert alles dat in de laatste 24 uur is toegevoegd of bewerkt)
  • newer:"4 weeks"

Toegestane tijdseenheden zijn: seconde(n), minuut(minuten), uur(uren), dag(dagen), week(weken), maand(maanden) en jaar(jaren).

Filteren op locatie

Standaard maakt de Wizard query's die zoeken in de huidge kaartweergave (via een <bbox-query {{bbox}}/>). Door een filter voor een locatie aan het einde van de zoekterm te specificeren, kunt u ook in andere plaatsen zoeken:

selectie omschrijving
in bbox (standaard) Komt overeen met objecten die in de huidige kaartweergave staan.
in place Komt overeen met objecten die binnen een gebied met de naam place staan.
around place Komt overeen met objecten die in de nabijheid van een object met de naam place staan.
global Komt overeen met globale objecten, zonder beperking van locatie.

De place-namen die hierboven worden vermeld worden eerst doorgegeven door middel van een Nominatim zoekactie. Dat betekent dat u elke plaatsnaam kunt gebruiken die u ook kunt gebruiken in het zoekvak van OSM, zoals namen van steden, POI's, adressen, etc.

  • tourism=museum in Vienna
  • amenity=restaurant around "1600 Pennsylvania Ave NW, Washington"
  • tourism=attraction around "Riesenrad, Wien"

Booleaanse operatoren

operator omschrijving
X or Y

X || Y, X | Y

Komen overeen wanneer de objecten een tag hebben met de sleutel key OF de waarde value.
X and Y

X && Y, X & Y

Komen overeen wanneer de objecten een tag hebben met de sleutel key EN de waarde value.

Alle Booleaanse operatoren kunnen worden gebruikt met haakjes om de prioriteiten van de operatoren te wijzigen:

  • (highway=bus_stop or railway=platform) and shelter=yes

Wizard gevuld door een URL-parameter

U kunt koppelingen naar overpass turbo maken die de querywizard gebruiken om een query te maken (die wordt geladen bij het opstarten en wordt weergegeven aan de gebruiker). Een voorbeeld is http://overpass-turbo.eu/?w=pub+in+dublin. Dergelijke URL's naar Overpass turbo zijn zowel vrij kort als enigszins te lezen door mensen.

Door aan deze koppeling &R toe te voegen, zal de query direct worden uitgevoerd en de resultaten van de query worden op de kaart weergegeven. Voorbeeld: http://overpass-turbo.eu/?w=pub+in+dublin&R

U mag jokertekens gebruiken

U zou alle ham-radio repeaters willen zien in een bepaalde regio in Duitsland. De callsigns van de ham-radio repeaters in Duitsland beginnen allemaal met: DB0* voorbeelden: DB0XS, DB0SR ... en de callsigns zijn gesitueerd in de tag name.

Oplossing: gebruik deze reguliere expressie: name~"^DB0.*".

Momenteel, bij het zoeken naar een tag die bestaat uit key=value, zijn jokertekens alleen mogelijk bij het definiëren van de value van een tag, u kunt niet een jokerteken toepassen op de key.
De mogelijkheid om ook via een regex te zoeken op een key is nu beschikbaar, zie boven.

Technische details

De wizard definieert zijn eigen grammatica geschreven in PEG.js (een eenvoudige parsergenerator voor JavaScript). De geparsde query (een boom van Booleaanse bewerkingen en filters) wordt dan genormaliseerd naar disjunctieve normale vorm (A∧B∧…) ∨ (X∧Y∧…) ∨ … die veel gemakkelijker weer te geven is als een Overpass query (d.i. een envoudige vereniging van query's). Daarna wordt heel gemakkelijk een geannoteerde Overpass QL query geconstructeerd. Voor enkele filters worden speciale query-sneltoetsen (zoals {{geocodeArea:*}} voor een zoekactie … in Area) gebruikt.