Source code for TileCache.Services.VETMS

# BSD Licensed, Copyright (c) 2006-2010 TileCache Contributors

from TileCache.Service import Request, Capabilities 
import TileCache.Layer as Layer

[docs]class VETMS (Request): """ Support for Virtual Earth quadkey-based URLs. <host>?ve=true&layer=global_mosaic&tile=000.jpg """
[docs] def parse (self, fields, path, host): """Take in VETMS params and return a tile.""" for key in ['layer', 'tile']: if fields.has_key(key.upper()): fields[key] = fields[key.upper()] elif not fields.has_key(key): fields[key] = "" layer = self.getLayer(fields['layer']) tilenumber = str(fields['tile']) quadkey = tilenumber.split(".")[0] tile = None cell = self.unquad(quadkey) tile = Layer.Tile(layer, cell[0], cell[1], cell[2]) return tile
[docs] def unquad (self, quad): """ Returns x/y/z ints based on a quadkey. >>> ve = VETMS({}) >>> ve.unquad("1") [1, 1, 1] >>> ve.unquad("") [0, 0, 0] >>> ve.unquad("02") [0, 2, 2] """ z = len(quad) col = int(0) row = int(pow(2, z)-1) quadint = int(0) for i in range (0, z): quadint = int(quad[i]) tmp = int(pow(2, z-(i+1))) if (quadint == 1): col += tmp elif (quadint == 2): row -= tmp elif (quadint == 3): col += tmp row -= tmp cell = [int(col), int(row), int(z)] return cell
[docs] def serverCapabilities (self, host): """Report capabilities for VETMS.""" return Capabilities("text/xml", """<?xml version="1.0" encoding="UTF-8" ?> <Services> <VETileMapService version="1.0.0" href="%s?ve=true/" /> </Services>""" % host)