Tile Map Service Specification

From OSGeo
Revision as of 17:52, 22 October 2006 by Pramsey (talk | contribs) (First draft, still have to do cacheability section)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Document Scope

This standard specifies the behavior of a service that provides access to georeferenced maps in the form of a regularly spaced set of regularly sized squares at a finite number of scales. This standard specifies operations to retrieve a computer-readable description of the service instance and to retrieve particular tiles.

A Tile Map Service provides access to cartographic maps of geo-referenced data, not direct access to the data itself. This document standards the way in which map tiles are requested by clients, and the ways that servers describe their holdings.

Document Form

This specification will proceed from a description of general descriptive resources provided by the server to particular resources (such as map tiles) providing example of access URLs and return values at each stage.

Resources

The Tiled Web Service provides access to resources, in particular, to rendered cartographic tiles at fixed scales. Access to these resources is provided via a "REST" interface, starting with a root resource describing available layers, then map resources with a set of scales, then scales holding sets of tiles.

Root Resource

The root resource describes the available versions of the <TileMapService> (and possibly other services as well).

Request:

 http://tms.osgeo.org/

Response:

 <?xml version="1.0" encoding="UTF-8" ?>
 <Services>
   <TileMapService version="1.0.0" href="http://tms.osgeo.org/1.0.0/" />
   <TileMapService version="1.1.0" href="http://tms.osgeo.org/1.1.0/" />
   <FancyFeatureService version="0.9" href="http://ffs.osgeo.org/0.9/" />
 </Services>

TileMapService

The service and the available tile maps.

Request:

 http://tms.osgeo.org/1.0.0/

Response:

 <?xml version="1.0" encoding="UTF-8" ?>
 <TileMapService version="1.0.0">
   <Title>Example Tile Map Service</Title>
   <Abstract>This is a longer description of the example tiling map service.</Abstract>
   <KeywordList></KeywordList>
   <ContactInformation>
     <ContactPersonPrimary>
       <ContactPerson>Paul Ramsey</ContactPerson>
       <ContactOrganization>Refractions Research</ContactOrganization>
     </ContactPersonPrimary>
     <ContactPosition>Manager</ContactPosition>
     <ContactAddress>
       <AddressType>postal</AddressType>
       <Address>300 - 1207 Douglas Street</Address>
       <City>Victoria</City>
       <StateOrProvince>British Columbia</StateOrProvince>
       <PostCode>V8W2E7</PostCode>
       <Country>Canada</Country>
     </ContactAddress>
     <ContactVoiceTelephone>12503833022</ContactVoiceTelephone>
     <ContactFacsimileTelephone>12503832140</ContactFacsimileTelephone>
     <ContactElectronicMailAddress>pramsey@refractions.net</ContactElectronicMailAddress>
   </ContactInformation>
   <TileMaps>
     <TileMap 
       href="http://tms.osgeo.org/1.0.0/vmap0/" 
       srs="EPSG:4326"
       global-profile="1">
       VMAP0 World Map
     </TileMap>
     <TileMap 
       href="http://tms.osgeo.org/1.0.0/landsat2000/"
       srs="EPSG:3005"
       global-profile="0">
       British Columbia Landsat Imagery (2000)
     </TileMap>
   </TileMaps>
 </TileMapService> 


TileMap

A map is a (usually) cartographically complete map representation. Sometimes maps are built to be used in conjunction, as a set of stacked layers, but they are generally visually complete on their own.

Maps are composed of a set of scale-appropriate cartographic renderings, each divided up into regularly spaced image tiles, called "tile sets". Large-scale (eg, 1:10000000) tile sets may only contain a handful of tiles. Small-scale tile sets (eg, 1:10000) may contain millions of tiles.

At a particular scale, and in a particular cartographic projection, a map is represented by a tileset, a coverage of regularly sized and spaced images that taken together form a complete visual representation of the entire area of coverage of the map.

Each TileMap supports one SRS and one image format. To support more than one SRS or image format, define extra TileMaps in your TileMapService for each combination you want.

Request:

 http://tms.osgeo.org/vmap0/

Response:

 <?xml version="1.0" encoding="UTF-8" ?>
 <TileMap tilemapservice="http://tms.osgeo.org/1.0.0/">
   <Title>VMAP0 World Map</Title>
   <Abstract></Abstract>
   <KeywordList></KeywordList>
|    <MetadataURL type="TC211">
|      <Format>text/xml</Format>
|      <OnlineResource xlink:href="" />
|    </MetadataURL>
|    <Attribution>
|      <Title></Title>
|      <OnlineResource />
|      <LogoURL width="" height="">
|        <Format>image/gif</Format>
|        <OnlineResource xlink:href="" />
|      </LogoURL>
|    </Attribution>
|    <WebMapServerURL>
|      <OnlineResource xlink:href="" />
|    </WebMapServerURL>
   <SRS>EPSG:4326</SRS>
   <BoundingBox minx="-180" miny="-90" maxx="180" maxy="90" />
   <Origin x="-180" y="-180">
   <TileFormat width="256" height="256" mime-type="image/jpeg" extension="jpg" coordinate-separator="_" />
   <TileSets>
     <TileSet href="http://tms.osgeo.org/1.0.0/vmap0/levelzero" units-per-pixel="0.703125" order="0" />
     <TileSet href="http://tms.osgeo.org/1.0.0/vmap0/levelone" units-per-pixel="0.3515625" order="1" />
     <TileSet href="http://tms.osgeo.org/1.0.0/vmap0/leveltwo" units-per-pixel="0.17578125" order="2" />
     <TileSet href="http://tms.osgeo.org/1.0.0/vmap0/levelthree" units-per-pixel="0.08789063" order="3" />
   </TileSets>
 </TileMap>


Request:

 http://tms.osgeo.org/landsat2000/

Response:

 <?xml version="1.0" encoding="UTF-8" ?>
 <TileMap tilemapservice="http://tms.osgeo.org/1.0.0/">
   <Title>British Columbia Landsat Imagery (2000)</Title>
   <Abstract></Abstract>
   <KeywordList></KeywordList>
|    <MetadataURL type="TC211">
|      <Format>text/xml</Format>
|      <OnlineResource xlink:href="" />
|    </MetadataURL>
|    <Attribution>
|      <Title></Title>
|      <OnlineResource />
|      <LogoURL width="" height="">
|        <Format>image/gif</Format>
|        <OnlineResource xlink:href="" />
|      </LogoURL>
|    </Attribution>
|    <WMSCapabilities>
|      <OnlineResource xlink:href="" />
|    </WMSCapabilities>
   <SRS>EPSG:3005</SRS>
   <BoundingBox minx="100000" miny="100000" maxx="1800000" maxy="1800000" />
   <Origin x="100000" y="100000">
   <TileFormat width="256" height="256" mime-type="image/png" extension="png" coordinate-separator="_" />
   <TileSets>
     <TileSet href="http://tms.osgeo.org/1.0.0/landsat2000/32" units-per-pixel="3200" order="0" />
     <TileSet href="http://tms.osgeo.org/1.0.0/landsat2000/16" units-per-pixel="1600" order="1" />
     <TileSet href="http://tms.osgeo.org/1.0.0/landsat2000/8" units-per-pixel="800" order="2" />
     <TileSet href="http://tms.osgeo.org/1.0.0/landsat2000/4" units-per-pixel="400" order="3" />
     <TileSet href="http://tms.osgeo.org/1.0.0/landsat2000/2" units-per-pixel="200" order="4" />
     <TileSet href="http://tms.osgeo.org/1.0.0/landsat2000/1" units-per-pixel="100" order="5" />
   </TileSets>
 </TileMap>


Tiles

The origin of a <TileMap> is defined in the coordinates of the spatial reference system of the <TileMap>. The x-coordinate of the tile numbers increases with the x-coordinate of the spatial reference system, and the y-coordinate of the tile numbers also increases with the y-coordinate of the spatial reference system.

Tiles are addressed under the "href" specified in the <TileSet> using a file name built from their coordinates, the "coordinate-separator" and "extension" from the <TileFormat>.

Example:

 The tile at the origin of the tile set in the first zoom level of vmap0.
 http://tms.osgeo.org/1.0.0/vmap0/levelzero/0_0.jpg
 The tile near the middle of the tile set in the third zoom level of vmap0.
 http://tms.osgeo.org/1.0.0/vmap0/leveltwo/3_4.jpg
 The tile near the middle of the tile set in the fifth zoom level of landsat2000.
 http://tms.osgeo.org/1.0.0/landsat2000/1/8500_8500.png


Diagram

(this is where a diagram of how the Origin, Bounding Box, tile numbering and so on all tie together)


Maximizing Interoperability

Using this server specification will ensure that clients can easily consume your tiled map data. However, it will not guarantee that clients can efficiently overlay your data with data from other tile map servers. In order to maximize the interoperability of your tile map with other tile maps, you must implement the "global profile" for your tile map.

(Services implementing the "global profile" should be flagged as such by setting the "global-profile" attribute in the <TileMap> element of the <TileMapService> document to "1".)

In order to conform to the "global profile" a tile map must meet the following requirements:

  • Must use <SRS>EPSG:4326</SRS>
  • Must provide <TileSet>s with units-per-pixel meeting the following formula for any integral value of "n" greater than or equal to 0: units-per-pixel = 0.703125 / 2^n


Maximizing Cacheability

(Using the Expires headers to ensure data gets cached and load on the server is reduced. Expires strategies for volatile data.)