OpenStreetMap stores features in three ways: a node is a single point, a way is a line or an outline, and a relation groups several elements, for example a multipolygon. A car park can be any of the three.
nwr searches all three at once, so nothing is missed.
The query
[out:json][timeout:25]; area["name"="Bern"]["admin_level"="8"]["wikidata"="Q70"]->.a; nwr["amenity"="parking"](area.a); out center;
Run it
Live result from overpass.ch, cached for up to 12 hours. Map data © OpenStreetMap contributors (ODbL).
How it works
- Another place called Bern also has admin_level 8.
["wikidata"="Q70"]picks the Swiss capital. nwris short for the union ofnode,wayandrelationwith the same filters.out center;adds acentercoordinate to ways and relations, so every result can be shown as a point.- Use
out geom;instead if you want the full outlines.
Variations
- Count how the results are split by type in the result table below. In most cities the majority of car parks are ways (outlines).
nwandwrwork too, for nodes and ways or ways and relations only.
Run it from your code
curl https://api.overpass.ch/v1/YOUR_API_KEY/interpreter \
--data-urlencode 'data@query.overpassql'
import requests
query = open("query.overpassql").read()
r = requests.post("https://api.overpass.ch/v1/YOUR_API_KEY/interpreter",
data={"data": query}, timeout=120)
r.raise_for_status()
print(r.json()["elements"][:3])
const res = await fetch("https://api.overpass.ch/v1/YOUR_API_KEY/interpreter", {
method: "POST",
body: new URLSearchParams({ data: query }),
});
if (!res.ok) throw new Error(await res.text());
console.log(await res.json());
Save the query as query.overpassql. It works the same in Overpass Turbo, QGIS and JOSM.