Skip to content

dfyz/osm-renderer

Repository files navigation

An OpenStreetMap raster tile renderer that compiles to a native Windows/Linux/macOS binary with no external dependencies.

You do have to install Rust to compile the binary, but other than that, all you need is an *.xml file with raw OSM data.

Importing data

This command takes a city.xml data file (get one from Geofabrik or a simliar service) and outputs city.bin, which will be used for rendering.

$ cargo run --release --bin importer city.xml city.bin

Rendering data

$ cat city.conf
[http]
address = localhost:8080

[geodata]
file = city.bin

[style]
file = mapcss/osmosnimki-minimal.mapcss
type = josm

$ cargo run --release --bin renderer city.conf

Raster tiles are now being served from http://localhost:8080/{z}/{x}/{y}.png. This URL template should work out of the box with leaflet.js, MKTileOverlay, or any map library that supports slippy tile layers.

You can use the @2x suffix to request high-resolution tiles (i.e. change your URL template to http://localhost:8080/{z}/{x}/{y}{r}.png for leaflet.js).

Rendering sample

The rendering style is based on MAPS.ME.

London centre

Caveats

The font renderer used in this project is very rudimentary, and only supports a limited number of scripts that are included in Noto Sans (namely, Latin, Greek, and Cyrillic).