OJW's tile data server

From OpenStreetMap Wiki
Jump to: navigation, search


This is an implementation of a cacheable Tile data server, the OSM data is transformed a bit:

  • Ways contains the node coordinates, allowing ways to render without fetching nodes.
  • Ways still contains node IDs, so you can spot connected ways.
  • Coordinates are projected into slippy-map tile coordinates, to make tile-rendering faster


Get nodes within a tile


Get ways within a tile


Get way by ID


Get map of a tile


this is the main aim of the tileserver - everything else is ancillary

What are x and y

x and y are (1/231)th of the width or height of the tile map

you want more explanation?

OK, imagine you've multiplied them by 1/(2^31), so you've got values from 0 to 1.


in X, 0 is 180 degrees west, and 1 is 180 degrees east. This is completely linear, so you can just multiply X by 360 and remove 180 to get degrees (WGS84)

in Y, 0 is the top of the map at 85.0511 north, and 1 is the similar number of degrees south. This is in the mercator projection, so don't try converting it to degrees without using the inverse of that famous log(tan + sec) equation

See Slippy map tilenames for the gory details, and sample implementations in 13 languages

even more?

y = (1 - log(tan(lat) + sec(lat)) / π) / 2

where lat is in degrees, and y is the 0-1 value mentioned above. Reverse this equation to convert y to lat.


This API is designed to be cacheable. While the API in itself isn't much different from the real API, the difference is that with this one you expect many different people to be requesting the same (or similar) URLs with the same result.

Therefore, if anyone wants to setup a reverse cache thingy in front of the website, it might be very useful.


These are all simple, just haven't been added to the server code or data yet:

  • tagged nodes
  • relations
  • ways which cross the tile but don't contain any nodes within the tile
  • UK only
  • 2008-05-21 data only


  • query at more than zoom-15(all files are static)
  • Way-simplifying as you request lower zoom levels


obviously the big push for this type of server is to do on-demand rendering (where you don't need to specify new map layers a year in advance, or need one server per map layer) e.g. see pyrender idea

but another use might be the routing, where you just keep loading new tiles as your route moves between areas, rather than needing to load everything at the beginning.


The code can be downloaded from OSM SVN repository

svn co http://svn.openstreetmap.org/applications/utils/export/tiledata/import





Status (data)

Coverage Planet
Date 2008-06-11
Data Ways