Пример #1
0
def get_tile(request, version, layername, z, x, y, extension='png'):
    global style
    image = None
    name = request.META['QUERY_STRING'] or 'all'
    name = strip_name(name)
    mapnik_layer = MapnikLayer(
                 name,
                 'foo',# mapfile skipped as we dynamically assign map object
                 spherical_mercator = 'true',
                 extension = "png",
                 tms_type = 'google', # tms or google
                 paletted = 'true',
                 debug=False
                 )
    srv.layers[name] = mapnik_layer
    z, x, y = int(z), int(x), int(y)
    if mapnik_layer.tms_type == "google":
        res = mapnik_layer.resolutions[z]
        maxY = int(
          round(
            (mapnik_layer.bbox[3] - mapnik_layer.bbox[1]) / 
            (res * mapnik_layer.size[1])
           )
        ) - 1
        tile  = Tile(mapnik_layer, x, maxY - y, z)
    else:
        tile = Tile(mapnik_layer, x, y, z)
    if settings.CACHE_SEARCH_TILES:
        image = srv.cache.get(tile)
    if not image:
        # cached map - must be run multiprocess to avoid potential race condition
        m = query_hash.get(name)
        if not m:
            trees, plots, agg_search_result, str_tile_query = _build_tree_search_result(request)
            plots = plots.filter(tree__in=trees)
            trees = plots.only('geometry')
            styles=[{'name':'style','obj':style}]
            m = qs_to_map(trees,styles=styles)
            #print mapnik.save_map_to_string(m)
            query_hash[name] = m
        # push the actual mapnik map into the TC MapnikLayer
        mapnik_layer.mapnik = m
        if settings.CACHE_SEARCH_TILES:
            # render and cache
            image = srv.renderTile(tile)[1]
        else:
            # render directly from layer, not service, therefore bypassing saving to cache
            image = mapnik_layer.renderTile(tile)
    response = TileResponse(image)    
    return response(extension)
Пример #2
0
def get_tile(request, version, layername, z, x, y, extension='png'):
    global style
    image = None
    name = request.META['QUERY_STRING'] or 'all'
    name = strip_name(name)
    mapnik_layer = MapnikLayer(
        name,
        'foo',  # mapfile skipped as we dynamically assign map object
        spherical_mercator='true',
        extension="png",
        tms_type='google',  # tms or google
        paletted='true',
        debug=False)
    srv.layers[name] = mapnik_layer
    z, x, y = int(z), int(x), int(y)
    if mapnik_layer.tms_type == "google":
        res = mapnik_layer.resolutions[z]
        maxY = int(
            round((mapnik_layer.bbox[3] - mapnik_layer.bbox[1]) /
                  (res * mapnik_layer.size[1]))) - 1
        tile = Tile(mapnik_layer, x, maxY - y, z)
    else:
        tile = Tile(mapnik_layer, x, y, z)
    if settings.CACHE_SEARCH_TILES:
        image = srv.cache.get(tile)
    if not image:
        # cached map - must be run multiprocess to avoid potential race condition
        m = query_hash.get(name)
        if not m:
            trees, plots, agg_search_result, str_tile_query = _build_tree_search_result(
                request)
            plots = plots.filter(tree__in=trees)
            trees = plots.only('geometry')
            styles = [{'name': 'style', 'obj': style}]
            m = qs_to_map(trees, styles=styles)
            #print mapnik.save_map_to_string(m)
            query_hash[name] = m
        # push the actual mapnik map into the TC MapnikLayer
        mapnik_layer.mapnik = m
        if settings.CACHE_SEARCH_TILES:
            # render and cache
            image = srv.renderTile(tile)[1]
        else:
            # render directly from layer, not service, therefore bypassing saving to cache
            image = mapnik_layer.renderTile(tile)
    response = TileResponse(image)
    return response(extension)
Пример #3
0
def get_tile(request, version, layername, z, x, y, extension="png"):
    global style
    image = None
    name = request.META["QUERY_STRING"] or "all"
    name = strip_name(name)
    mapnik_layer = MapnikLayer(
        name,
        "foo",  # mapfile skipped as we dynamically assign map object
        spherical_mercator="true",
        extension="png",
        tms_type="google",
        paletted="true",
        debug=False,
    )
    srv.layers[name] = mapnik_layer
    z, x, y = int(z), int(x), int(y)
    if mapnik_layer.tms_type == "google":
        res = mapnik_layer.resolutions[z]
        maxY = int(round((mapnik_layer.bbox[3] - mapnik_layer.bbox[1]) / (res * mapnik_layer.size[1]))) - 1
        tile = Tile(mapnik_layer, x, maxY - y, z)
    else:
        tile = Tile(mapnik_layer, x, y, z)
    if settings.CACHE_SEARCH_TILES:
        image = srv.cache.get(tile)
    if not image:
        # cached map - must be run multiprocess to avoid potential race condition
        m = query_hash.get(name)
        if not m:
            trees, geog_obj = _build_tree_search_result(request)
            trees = trees.only("geometry")
            styles = [{"name": "style", "obj": style}]
            m = qs_to_map(trees, styles=styles)
            query_hash[name] = m
        # push the actual mapnik map into the TC MapnikLayer
        mapnik_layer.mapnik = m
        if settings.CACHE_SEARCH_TILES:
            # render and cache
            image = srv.renderTile(tile)[1]
        else:
            # render directly from layer, not service, therefore bypassing saving to cache
            image = mapnik_layer.renderTile(tile)
    response = TileResponse(image)
    return response(extension)