The Service is the core component of the TileCache Server: various services (wsgi, cgi, mod_python) feed into it. You can see the properties:: >>> import TileCache.Service >>> filter(lambda x: not x.startswith("_"), dir(TileCache.Service)) ['cache', 'config', 'dispatchRequest', 'expireTile', 'files', 'generate_crossdomain_xml', 'layers', 'load', 'loadFromSection', 'metadata', 'renderTile', 'tilecache_options'] Or you can create one. In general, this is generated via the config file, but you can build one manually as well:: >>> from TileCache.Caches.Disk import Disk >>> from TileCache.Layer import Layer, Tile >>> l = Layer("basic", debug=False) >>> t = Tile(l, 0, 0, 0) >>> service = TileCache.Service(Disk("/tmp/tilecache"), {"layer": l}) >>> service # doctest: +ELLIPSIS <TileCache.Service.Service object at ...> The Service dispatchRequest method is what actually generates the tiles. It calls out to the layer's renderTile method. On the base Layer class, nothing is returned: all renderTile implementation is done by subclasses. As a result, rendering the tile fails on this layer:: >>> try: ... tile_data = service.dispatchRequest({}, path_info="/1.0.0/layer/0/0/0.png") ... except Exception, E: ... str(E) 'Zero length data returned from layer.' KML SuperOverlays can be generated as an alternative output to the TMS-style requests: simply change the image format to ".kml". >>> kml = service.dispatchRequest({}, path_info="/1.0.0/layer/0/0/0.kml") >>> kml[0] 'application/vnd.google-earth.kml+xml' >>> kml[1] '<?xml version="1.0" encoding="UTF-8"?>\n<kml xmlns="http://earth.google.com/kml/2.1">\n\n <Document>\n <Region>\n <Lod>\n <minLodPixels>256</minLodPixels><maxLodPixels>512</maxLodPixels>\n </Lod>\n <LatLonAltBox>\n <north>90.0</north><south>-90.0</south>\n <east>0.0</east><west>-180.0</west>\n </LatLonAltBox>\n </Region>\n <GroundOverlay>\n <drawOrder>0</drawOrder>\n <Icon>\n <href>http://example.com//1.0.0/basic/0/0/0</href>\n </Icon>\n <LatLonBox>\n <north>90.0</north><south>-90.0</south>\n <east>0.0</east><west>-180.0</west>\n </LatLonBox>\n </GroundOverlay>\n <NetworkLink>\n <name>tile</name>\n <Region>\n <Lod>\n <minLodPixels>256</minLodPixels><maxLodPixels>-1</maxLodPixels>\n </Lod>\n <LatLonAltBox>\n <north>0.0</north><south>-90.0</south>\n <east>-90.0</east><west>-180.0</west>\n </LatLonAltBox>\n </Region>\n <Link>\n <href>http://example.com//1.0.0/basic/1/0/0.kml</href>\n <viewRefreshMode>onRegion</viewRefreshMode>\n </Link>\n </NetworkLink>\n<NetworkLink>\n <name>tile</name>\n <Region>\n <Lod>\n <minLodPixels>256</minLodPixels><maxLodPixels>-1</maxLodPixels>\n </Lod>\n <LatLonAltBox>\n <north>0.0</north><south>-90.0</south>\n <east>0.0</east><west>-90.0</west>\n </LatLonAltBox>\n </Region>\n <Link>\n <href>http://example.com//1.0.0/basic/1/1/0.kml</href>\n <viewRefreshMode>onRegion</viewRefreshMode>\n </Link>\n </NetworkLink>\n<NetworkLink>\n <name>tile</name>\n <Region>\n <Lod>\n <minLodPixels>256</minLodPixels><maxLodPixels>-1</maxLodPixels>\n </Lod>\n <LatLonAltBox>\n <north>90.0</north><south>0.0</south>\n <east>0.0</east><west>-90.0</west>\n </LatLonAltBox>\n </Region>\n <Link>\n <href>http://example.com//1.0.0/basic/1/1/1.kml</href>\n <viewRefreshMode>onRegion</viewRefreshMode>\n </Link>\n </NetworkLink>\n<NetworkLink>\n <name>tile</name>\n <Region>\n <Lod>\n <minLodPixels>256</minLodPixels><maxLodPixels>-1</maxLodPixels>\n </Lod>\n <LatLonAltBox>\n <north>90.0</north><south>0.0</south>\n <east>-90.0</east><west>-180.0</west>\n </LatLonAltBox>\n </Region>\n <Link>\n <href>http://example.com//1.0.0/basic/1/0/1.kml</href>\n <viewRefreshMode>onRegion</viewRefreshMode>\n </Link>\n </NetworkLink>\n \n</Document></kml>'