Large-scale Map Matching with Meili

This is a joint post by Kevin Kreiser (Mapzen) and Tao Peng (Mapillary).

The world is full of uncertainties. When a Mapillary member uploads his or her favorite street sequence, technically we do not know which streets (in the case of OpenStreetMap - “ways” to be more specific) are mapped. This is because the sequence is usually noisy, and rarely properly aligned with the streets. In order to know what street segments you are mapping, we need a GIS technique called map matching.

Meili - a collaboration between Mapillary and Mapzen

We are pleased to announce our map matching solution, Meili, a collaborative open source project between Mapillary and team Valhalla. Meili is built as a component of Valhalla, an open source routing engine for use with OpenStreetMap data. In Valhalla, Meili focuses on providing a state-of-the-art map matching solution as a service and library. As Meili is built with Valhalla, it shares the awesomeness of Valhalla: open data, small memory footprint and multiple transport modes (so you can match traces of different travel modes).

Large-scale Matching Meili can easily get thousands of points matched in a second.

High performance map matching

We built Meili with performance in mind, to be able to process large-scale spatial data. At Mapillary, Meili can get all street photos, over 70 million points, matched to OpenStreetMap streets in a few hours. This allows us to do a complete matching every week or so, to keep all photos associated with the latest OpenStreetMap data.

How we use Meili at Mapillary

Associating photos and OpenStreetMap ways can benefit both Mapillary and the OpenStreetMap community. For Mapillary, in addition to properly aligning the green coverage lines on the map, the logical association can tell us how many photos have mapped a street segment and thus help us decide if we should further map it or not. For the OpenStreetMap community, information such as traffic signs and road conditions extracted from the street photos are also associated with OpenStreetMap ways. This can help detect issues and add road features to OpenStreetMap road network.

Long walking sequence A long walk sequence (green line) by @talllguy is matched to streets (red lines). Follow along in the photos below.

General applications

Meili can be a useful tool for many applications involved with large-scale spatial data. Location-based services can use it to process location-based activities. Traffic researchers can use it to process floating car data for traffic analysis. If you need to deal with noisy spatial data and you want to correlate that with OpenStreetMap, Meili will be a good choice.


In the future we will continue to work closely with team Valhalla to better integrate Meili with Valhalla and provide more features such as online map matching, which is a key component for car navigation. We will also continue to make it more accurate and faster for large-scale map matching. And of course, we will build more applications based on map matched street photos.

If you want to join us, you’re welcome to fork Meili, try it, or open issues.