How easy is it to combine different tile services in one map? For instance, how easy is it to combine Google Maps aerial photos with a roads overlay from a TMS. Well this depends on two things, 1) how smart is the client, and 2) how compatible are the tile schemas. Here we look at several levels of compatibility taking the TMS specification as an example.
In TMS a tile schema is described in a TileMap. The main parameters involved are:
- Origin: the coordinate where the first tile starts. It is the bottom left corner of tile (0, 0).
- BoundingBox: the extent in which tiles are available. The BoudingBox’s bottom left coordinate is often identical to the origin but doesn’t have to be.
- TileSets (levels): a list of the available tile levels and their resolutions.
1) Identical
Okay, lets keep this short, sometimes the schema’s are just the same.
2) Common tile system
When the BoundingBox’s are different but the Origin and TileSets are the same a tile in one schema will have the same x ,y and level as it’s corresponding tile in the other schema. The only difference between the schema’s is that some tiles can be available in one scheme but not in the other.
The two schemas can be said to be in the same tile system. If the TileSets are perceived as a Z-axis it forms a kind of three dimensional coordinate system for tiles. The origin of that space is defined by Origin.X, Origin.Y and the resolution of the first TileSet. The steps are defined by the tile width, tile height, the step size between resolutions (which can be irregular to complicate things).
3) Projectable to another tile system
When the tile system differs it is sometimes possible to transform a tile in one tile system to the other tile system. For instance when in one schema the Y-Axis is inverted with respect to the other it is easy to see how tile (0, 0) can be mapped to tile (0, count – 1). Such a trick is sometimes used in simple cases. I have not seen it done for more complicated relations. In this case the boundingboxes are the same, but the x, y and level identifiers are not.
4) Projectable to the map coordinate system
When the above methods fail because the TileSets are too different it is not possible to project one tile to another but it is still possible to project the tiles to a single map coordinator system, thus combining two totally different tile layers. The downside is that you can not use performance optimizations where you combine tiles of several sources into a single tile. This can cost more memory and may be somewhat slower.