tile.openstreetmap.org issues


I’m currently working on a project using OSM. It is an application similar to GoogleMaps , but using OSM Data ( tiles). I’m developing it using Qt, thus it works on Linux, Windows and Windows Mobile. On other platforms it has not been tested yet.

I have noticed following issues using tiles from tile.openstreetmap.org :

  1. This server seems not to support “If-Modified-Since” HTTP request header field and 304 ( not modified ) response code. I think it would be very useful to support it.

  2. The data on this server seems to be partly outdated. I noticed that in Poland. If you have a look at the coordinate 53°30’0" N 18°45’18" E you will notice, that old and imprecise data in tiles on the north from this point and newer and precise data on the south. How can the map be updated? Who is responsible for that?

The tile server uses E-tag’s instead of modification dates. So if you ask it for the E-Tag it will return 304 if it hasn’t changed. The server uses the md5 hash has a E-tag, so is more precise than simply the date. This is also partly for historical reasons, where the tiles used to be re-rendered once a week no matter what. So the modification date could have said it was modified, when it was only rendered back to the same thing as before. The other reason is that tiles get rendered in batches of 64 (metatiles). Again some tiles might stay the same, so E-Tag is more reliable than the modified date.

There are a couple of potential reasons: For one, low zoom tiles don’t get rendered very often. Only once every couple of weeks. Secondly, tiles get rerendered at the time someone looks at them if they have changed. However, the server is sometimes too slow (either too busy, or the tiles are too complex) to rerender the metatile within the 3 second timeout. In that case old tiles are returned and the tiles get rendered in the background so that they are uptodate the next time you visit them. The third possibility is that the internal tile expiry didn’t correctly detect the changes to the data and thus not mark the tiles for rerendering. This occasionally happens for some forms of relations I think. You can manually force a tile to be rerendered by appending a /dirty to the tile url. Oh, and there is a 4th option, which is that coastlines go through yet another process and too can be quite out of date, as they are manually updated.