speedup get_render_level_data

This commit is contained in:
Laura Klünder 2017-10-19 13:47:03 +02:00
parent eb370b430c
commit 03e35a019e
2 changed files with 10 additions and 5 deletions

View file

@ -45,6 +45,11 @@ class LevelGeometries:
def get_render_level_data(level):
levels = Level.objects.filter(Q(on_top_of=level.pk) | Q(base_altitude__lte=level.base_altitude))
if isinstance(level, Level):
level_pk, level_base_altitude = level.pk, level.base_altitude
else:
level_pk, level_base_altitude = Level.objects.filter(pk=level).values_list('pk', 'base_altitude')[0]
levels = Level.objects.filter(Q(on_top_of=level_pk) | Q(base_altitude__lte=level_base_altitude))
levels = levels.values_list('geoms_cache', 'default_height')
return levels

View file

@ -1,5 +1,4 @@
from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404
from shapely.geometry import box
from c3nav.mapdata.models import Level, Source
@ -23,9 +22,10 @@ def tile(request, level, zoom, x, y, format):
if not box(bounds[0][1], bounds[0][0], bounds[1][1], bounds[1][0]).intersects(box(minx, miny, maxx, maxy)):
raise Http404
level = get_object_or_404(Level, pk=level)
svg = render_svg(level, miny, minx, maxy, maxx, scale=2**zoom)
try:
svg = render_svg(level, miny, minx, maxy, maxx, scale=2**zoom)
except Level.DoesNotExist:
raise Http404
if format == 'svg':
response = HttpResponse(svg.get_xml(), 'image/svg+xml')