NL:Overpass turbo/Wizard
Servers status · Versions · Development · Technical design · Installation · XAPI compatibility layer · Public transport sketch lines · Applicaties · Source code and issuesOverpass turbo · Wizard · Overpass turbo shortcuts · MapCSS stylesheets · Export to GeoJSON · meer (Nederlands) · Development · Source code and issues · Web siteOverpass Ultra · Examples · Overpass Ultra extensions · MapLibre stylesheets · URL Params · meer (Nederlands) · Source code and issues · Web site
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 |
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==* |
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!==* |
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 aanpassingi
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.