Esempio n. 1
0
def get_query(layer, z, x, y, ext):
    layer = env.layers[layer]
    coord = Coordinate(y, x, z)
    bounds = u.bounds(layer.projection, coord)
    mimetype, format = u.get_type_by_ext(ext)

    return env.provider.get_query(layer, coord, bounds, format)
Esempio n. 2
0
def get_tile(layer, z, x, y, ext, ignore_cached = False):
    if layer not in env.layers and layer != 'all': raise ValueError('Layer not found: ' + layer)

    provider = env.provider
    cache    = env.cache
    layers   = env.layers.values() if layer == 'all' else [env.layers[layer]]
    coord    = Coordinate(y, x, z)
    mimetype, format = u.get_type_by_ext(ext)
    render_tile = partial(provider.render_tile, layers, coord, format)

    if cache:
        cache.lock(layer, coord, format)
        try:
            body = cache.read(layer, coord, format) if not ignore_cached else None

            if body is None:
                body = render_tile()
                cache.save(body, layer, coord, format)
        finally:
            cache.unlock(layer, coord, format)
    else:
        body = render_tile()

    return mimetype, body