What is a Tile Service?
We are starting to see implementations of servers that are "something" like a web map server. What is that something?
- view of the world split up into tiles
- tiles avaiable in a single projection
- tiles available at known zoom levels
There are a number of these servers available:
- Nasa World Wind
- Virtual Earth
- OSGeo Tile Map Service
- WMS Tile Profile
So what does this client interface going to look like:
- TileService - a good name, describes what we have
- Configure with a single URL
- deleage to TileServer strategy objects (one implementation per service type)
- configured with a single URI
- GeoResourceInfo describing the service
- TileInfo extension descrbing zoom levels (and anything else needed)
Represents a single tile server, actual protocol negotiated by TileStrategy object.
Content is described and accessed through TileMap instances, these have enough information for rendering:
Tile Service/Resource Metadata
Metadata for the TileServer needs to capture enough information for discovery:
Metadata for each TileMap captures enough information to set up a display pipeline.
Extension Interface for Protocol Support
Individual protocol support is handled by TileStrategy objects. Once again this is similar to the WMS implementation.
We need a strategy object capturing the protocol specific behavior:
The factory has the difficult decision of deciding what URI it can support; factory negotiation determines the protocol used. Addition information may may be required if protocol version negotiation is also needed (as in the WMS case).
Part of the fun of having TileRange is the ability to interact smoothly with a Cache.
TileDraw is used to isolate the TileCache; for reuse by those working with WMS or other renderers.
The following implementations are desired:
- PassthroughTileCache - The initial implementaion can be virtual, and just create a standalone TileRange
- MemoryTileCache - uses memory up to a specified capacity
- DiskTileCache - uses diskspace up to a specified capacity
The most common compound request is handled with a special data structure, a progress monitor
is used to provide feedback on during the loadTile process, the getTiles method will return a set
of the correct size; although some GridCoverages may be transparent (or pixelated) during the loading