Premium apps Part of Cartograph

Cartograph GPS Art Route Designer (shape → roads → GPX)

Snap a heart, star or other shape to the streets of your OSM extract and get a GPX route.

Up to 25 MB. Leave empty to use the built-in Vaduz sample. Download extracts from your own OpenStreetMap export, Geofabrik or BBBike; Cartograph never fetches map data itself.

Empty: the middle of the extract.

More options
m
°
m

0 = automatic (shape length ÷ 60, at least 30 m).

0 = plain shortest paths between waypoints; higher values prefer streets close to the drawn line.

Try an example: Heart run in Vaduz (built-in sample) · Star ride by bike

More about this tool

How it works

Places a shape (heart, star, circle, square, triangle, arrow or zigzag) at a point, size and rotation, samples it into waypoints, snaps them to the walkable or rideable roads of your own OpenStreetMap extract and joins them with shortest paths that stay close to the shape. Returns the route as GPX with its length and how closely it follows the drawing. Routing runs on the extract itself — no routing service is used. It is the GPS-art engine of the Cartograph app.

  • The shape is placed with geodesics: every outline point keeps its direction and distance from the centre (Karney’s direct problem on WGS84), so the size is true on the ground.
  • The road graph is built from the extract: highway ways usable on foot or by bike (motorways and trunk roads, access=no/private and explicit foot=no/bicycle=no excluded; bikes avoid steps and footways unless allowed and follow one-way streets). Junctions are shared coordinates; edge lengths are great-circle distances.
  • The outline is sampled into waypoints; each is snapped to the nearest graph node within twice the spacing (dead ends avoided where possible). Consecutive waypoints are joined by A* shortest paths whose cost adds “stay-on-shape weight × distance from the shape segment ÷ spacing” per metre, so routes prefer streets that hug the drawing. Out-and-back spurs are removed.
  • Quality: mean distance of the route from the shape, the largest gap in either direction (Hausdorff-style) and the share of the shape that has the route within 25 m — measured every 10 m in a local equirectangular frame.

Sources

Part of Cartograph

  • Cartograph Map posters & route art

    Turn a place into a map print, a GPS-art route, a fair meeting point or a true-size map.

    Open Cartograph

Related tools

How to use the Cartograph GPS Art Route Designer

Snap a heart, star or other shape to the streets of an OpenStreetMap extract and get a GPX route with length and shape-fidelity figures.

What it is for

GPS art is a run or ride whose recorded track draws a picture – a heart for a special date, a star, letters or an animal. Planning one by hand means trying street after street on a map. This tool does the tedious part: it places a shape at the size and angle you choose, snaps it to the streets of your OpenStreetMap extract and joins everything into one route you can load into a watch or bike computer as GPX.

The routing is done by the tool itself on your extract (A* shortest paths with a penalty for leaving the shape). No routing service is involved, so the result depends only on the streets and access tags in your file. Leave the file field empty to try it on the built-in Vaduz sample.

It is not a navigation app: it knows nothing about traffic, closures or how safe a street is.

Worked example

On the Vaduz sample, the heart at 47.145, 9.517, 1,000 m wide, on foot, with the default stay-on-shape weight of 2:

  • Route length: 4.43 km
  • Shape length: 3.16 km
  • Shape covered within 25 m: 70 %
  • Mean distance from the shape: 28.7 m
  • Largest gap: 102 m

The route is longer than the outline because streets zig-zag around the curves of the heart. 70 % of the outline has the route within 25 m, enough for the heart to read clearly on a track. With the weight set to 0 (plain shortest paths) the route got slightly shorter, 4.39 km, and coverage dropped to 69 % – in this street grid the guidance matters little.

The star example by bike – 47.142, 9.52, 800 m wide – gave 4.50 km for a 2.82 km star with 60 % coverage, mean distance 35.8 m and a largest gap of 175 m. The bike profile may not use steps and footways and must follow one-way streets, so it has fewer options.

How to read the result

The picture shows your streets in grey, the shape dashed in purple and the route in orange, with a dot at the start. Shape covered within 25 m is the best single quality figure: it samples the outline every 10 m and counts how much of it has the route nearby. Mean distance tells you how far the route typically runs from the drawing, Largest gap where it had to leave it most. If waypoints had no street within reach, a warning counts them.

Download the GPX file and import it as a course or route.

Tips and common mistakes

  • Bigger shapes fit better: a heart 300 m wide has to squeeze into two or three blocks; at 800–1,500 m the street grid has room.
  • Rotate a few degrees at a time; the coverage figure often jumps when long lines of the shape align with main streets.
  • Rivers, railways and motorways have few crossings. Keep the shape on one side of them if you can.
  • Raise the stay-on-shape weight when the route takes shortcuts across the middle of the shape.
  • Check access on site. Parks may close at night and private roads are only excluded when they are tagged in OpenStreetMap.

FAQ

Why is the route longer than the shape?

Streets rarely follow curves and diagonals, so the route steps along the grid. Ratios of 1.3 to 1.6 are normal.

Can I use my own drawing?

In the Cartograph app, yes: draw any outline with the mouse or a finger. This tool page offers the built-in shapes; the API accepts the same shapes.

Which ways are used on foot?

Streets, paths, steps and tracks, but never motorways or trunk roads, and nothing tagged access=no, access=private or foot=no.

Does it work for any city?

Any city you have an OpenStreetMap extract of. The quality depends on how dense and well-mapped the street network is.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://cartographrouteart.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://cartographrouteart.usefulweb.app/mcp · tool name cartograph_route_art
Example request
curl -s -X POST https://cartographrouteart.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{"shape":"heart","center":"47.145, 9.517","widthM":1000,"profile":"foot"}'
Feedback · ideas & bug reports welcome