Overpass query example

Where two streets cross

Find the intersection node of two named streets with set intersection. Example: Langstrasse and Badenerstrasse, Zürich.

Streets that cross share a node. Collect the nodes of each street, then keep the nodes that are in both sets.

The query

[out:json][timeout:25];
area["name"="Zürich"]["admin_level"="8"]->.a;
way["highway"]["name"="Langstrasse"](area.a);
node(w)->.n1;
way["highway"]["name"="Badenerstrasse"](area.a);
node(w)->.n2;
node.n1.n2;
out;

Run it

Running the query…

Live result from overpass.ch, cached for up to 12 hours. Map data © OpenStreetMap contributors (ODbL).

How it works

  1. node(w) gets the nodes of the ways found in the line before.
  2. node.n1.n2 keeps only nodes that are in both n1 and n2: the intersection.
  3. The answer is the crossing point, usually a single node without tags.

Variations

  • Roads that meet at a roundabout share no node; search around a point instead.

Run it from your code

curl https://api.overpass.ch/v1/YOUR_API_KEY/interpreter \
  --data-urlencode 'data@query.overpassql'

Save the query as query.overpassql. It works the same in Overpass Turbo, QGIS and JOSM.

More examples

All examples →