Mapping intersections and roads is a task for the brave.

A lane-level render of a signalized intersection
A lane-level render of a signalized intersection

It also takes a vivid imagination. Other tools help you visualize, but none of them show the road as it really is. OSMPIE renders what your tags actually mean — lane by lane — so you can build correct road structures and fix the ones already there.

    What is OSMPIE?

    A road network and infrastructure editor for OpenStreetMap

    Road network editing

    OSMPIE focuses on how intersections, roads and markings actually look — lanes, pockets, tram tracks, parking. That makes it easier to add objects and tag them precisely: the coordinates of the points that matter, widths, connectivity and the position of center lines, and everything around them — parking, stops, traffic signals, pedestrian crossings.

    Derivative data generator

    It generates new objects: polygons, markings, graphs, routes. Export them to another editor for refinement, submit them to OSM, or use them however you see fit.

    Collaborative use

    Store and share changesets much as OSMCha does, but focused on roads: what changed reads as a before-and-after. Unlike OSMCha, you don't have to publish to OSM for that to work.

    How it works

    From tags to a lane-level model in four steps

    Nothing here replaces OpenStreetMap. OSMPIE reads the tags you already write and shows you what they add up to.

    1. 1

      Tag the intersection

      Draw and tag in the editor, or load an area straight from OSM. Lanes, turns, crossings, tram tracks — the tags you would write anyway.

    2. 2

      Bake it

      A bake is a snapshot of an area rendered from its tags into a lane-level model: every lane, every permitted turn, every conflict point on the intersection. It takes seconds, and you can bake the same area as often as you like.

    3. 3

      Read the result

      The render is the check. If a pocket ends in the wrong place or a turn is missing, you see it — no separate validator to run.

    4. 4

      Take it with you

      Share a link, download GeoJSON, Shape, call the API, or export the network to OpenDRIVE, Lanelet2, SUMO.*

    * Export to HD map formats — OpenDRIVE, Lanelet2, SUMO — is done by a separate application. It reads the same bake, so nothing has to be prepared twice.

    Accuracy

    The renderer works as a mirror

    Model something inaccurately and you see it straight away. If the render looks wrong, or stops resembling the imagery, a tag is missing or wrong. It is a comprehensive visual validator and a focused interface for tagging roads, intersections and everything transport-related.

    Map roads in OSM accurately, with OSMPIE acting as both assistant and validator.

    Share a link to your project — send it to a colleague for review before you apply the changeset, or drop it into the changeset comment when you publish to OSM.

    Download every render result as GeoJSON, or pull it into your GIS — QGIS, for example. A direct link works as well as the API.

    Get both models: the topological one, with attributes on every lane, point and connection, and the areal one — road surface with its markings.

    Open data

    Share the results and use them in your own projects

    Everything OSMPIE generates — images, GeoJSON, road and intersection polygons, markings and the rest — is open data under the ODbL. The only condition is clear, visible attribution to osmpie.org and openstreetmap.org as the sources.

    Beyond GeoJSON files, the OSMPIE API returns generation results for your own bakes as soon as they are ready.

    Concepts

    Four things to get right when you map

    OSMPIE reads what you tag, and four ideas decide whether the lane-level result matches the road. Two are established OSM tagging. Two are proposals we needed and wrote down, because nothing in OSM says it yet.

    Where the way’s line actually sits on the pavement

    An established OSM proposal, with two extensions.

    An OSM way is a line without width, so any lane model has to assume where that line sits on the pavement — by default, down the middle of the carriageway. Wherever the road is not symmetric about its own geometry, that assumption produces wrong output. On a segment where a turn lane is added, the pavement widens on one side only, but the centered line pushes every lane sideways. Forks, merges, and the short two-node stubs between a ramp and the mainline fail the same way.

    placement states where the centerline runs: middle_of:2, left_of:1, right_of:3 pin it to a numbered lane or lane edge; transition marks a way whose line is not parallel to the lanes, as at a fork, merge, or lane-count change. OSMPIE adds two extensions. dist:2.5 gives the offset in meters — positive to the right in the direction of travel, negative to the left — and placement:forward / placement:backward set each direction separately. Two centerlines offset outward render a buffer zone without a false lanes:both_ways=1; a negative offset carries them past each other so left turns pass on the right.

    Lane positions are derived from the centerline, so if the line is assumed centered when it is not, every lane, stop line, and conflict point downstream is placed on the wrong part of the road.

    Tagging

    What tags does OSMPIE support?

    To map intersections, their properties and their functions more precisely, we propose a handful of new junction:* tags and extend the use of existing ones.

    Road & junction tags

    Existing OSM tags and proposals already cover 90–95% of what comprehensive road mapping and rendering needs. The glossary lists every tag OSMPIE reads when it renders.

    View the tag glossary

    Applications

    What one correct intersection buys you

    You did exactly one thing: you tagged the intersection the way it really looks. Everything below follows from that, with no further work — and each of these is normally a separate job.

    A signal plan, without a site survey

    Conflict points, crossing lengths and intergreen times come out of the geometry you already tagged.

    Normally: a site visit and manual measurements.

    A simulator network, without redrawing it

    The same bake exports to SUMO, OpenDRIVE and Lanelet2.

    Normally: days of drawing the network by hand.

    Map matching at lane level

    Vehicle traces snap to a lane rather than to a road centerline, which is what makes lane-level flow analysis possible at all.

    Normally: an HD survey vehicle.

    Answers about your city

    How many intersections are there? How many are signalized? How complex are they? Intersections are objects here, with conflict counts and tram crossings attached — so these are queries, not guesses.

    Normally: unanswerable from raw OSM data.

    Clean vector tiles of the road surface

    A roads-only basemap without POI noise, for navigation, ITS or transit applications.

    Normally: a cartographic pipeline of your own.

    Objects to give back to OSM

    Road polygons, area:highway, crossing polygons, refined turn:lanes — save them back to OSM or into another GIS.

    Normally: drawn by hand, one object at a time.

    Where this leads next

    • Lane-level navigation. Precise positioning and maneuver guidance at complex intersections, and high-quality local maps of a single junction.
    • ITS and V2X. The same objects feed ADAS maps and MAPEM messages, and drive intersection and signal displays in traffic management systems.
    FAQ

    Questions we get asked

    How is this different from iD, JOSM or Rapid?

    It isn't a replacement for them. Those editors show you the tags; OSMPIE shows you what the tags mean once they are rendered as a road — lanes, turns, conflicts, markings. Most people keep editing in their usual editor and use OSMPIE to check the result and to generate data from it.

    Is it free?

    Yes. OSMPIE is a non-commercial project, and the data it generates is open under the ODbL.

    Do my edits go into OpenStreetMap automatically?

    No. Nothing is published until you say so. You can keep a changeset to yourself, share it with a colleague for review, and only then upload it to OSM through your own account.

    Do I need an account?

    Not to look around: bakes on this page, the gallery and the city maps are public. You sign in with your OpenStreetMap account when you want to edit and publish.

    Does it work in my region?

    Anywhere OSM data exists. You can bake any area yourself; the cities listed above are simply the ones we keep baked and served as tiles.

    Do I have to use the new tags?

    No. Existing OSM tags already cover most of what the renderer needs. The junction:* proposals close the remaining gaps, and they are proposals — discussion is welcome.

    Something looks wrong. Where do I report it?

    Open a GitHub issue, or come to the Telegram channel — a link to the bake helps a great deal.

    Community

    Built in the open, with the mappers who use it

    The tag proposals, the renderer's behavior and the priorities all come out of what mappers run into. If you map roads, your objections are useful.

    Open the editor

    Recently shipped

    • Curated gallery of bakes — the examples on this page come straight from it.
    • City-wide bakes as vector tiles — whole cities, served as tiles rather than one intersection at a time.
    • Exports to OpenDRIVE, Lanelet2 and SUMO — from the same lane model.
    • Lane-level map matching — traces attach to a lane, not to a centerline.