add AccessRestrictionAffected as GeometryIndexed subclass

This commit is contained in:
Laura Klünder 2017-11-20 17:21:19 +01:00
parent 390cc4aeb4
commit e06c71be61
6 changed files with 120 additions and 7 deletions

View file

@ -13,7 +13,7 @@ from shapely.ops import unary_union
from c3nav.mapdata.models import Level, MapUpdate
from c3nav.mapdata.render.geometry import AltitudeAreaGeometries, LevelGeometries
from c3nav.mapdata.utils.cache import MapHistory
from c3nav.mapdata.utils.cache import AccessRestrictionAffected, MapHistory
from c3nav.mapdata.utils.geometry import get_rings
empty_geometry_collection = GeometryCollection()
@ -35,7 +35,6 @@ class Cropper:
class LevelRenderData:
def __init__(self):
self.levels = []
self.access_restriction_affected = None
@staticmethod
def rebuild():
@ -103,7 +102,7 @@ class LevelRenderData:
break
render_data = LevelRenderData()
render_data.access_restriction_affected = {}
access_restriction_affected = {}
for sublevel in sublevels:
try:
@ -178,10 +177,10 @@ class LevelRenderData:
crop_to.intersection(new_geoms.walls.buffer(1))
))
for access_restriction, area in old_geoms.restricted_spaces_indoors.items():
for access_restriction, area in old_geoms.access_restriction_affected.items():
new_area = crop_to.intersection(area)
if not new_area.is_empty:
render_data.access_restriction_affected.setdefault(access_restriction, []).append(new_area)
access_restriction_affected.setdefault(access_restriction, []).append(new_area)
new_geoms.restricted_spaces_indoors = {}
for access_restriction, area in old_geoms.restricted_spaces_indoors.items():
@ -208,11 +207,13 @@ class LevelRenderData:
render_data.levels.append(new_geoms)
render_data.access_restriction_affected = {
access_restriction_affected = {
access_restriction: unary_union(areas)
for access_restriction, areas in render_data.access_restriction_affected.items()
for access_restriction, areas in access_restriction_affected.items()
}
AccessRestrictionAffected.build(access_restriction_affected).save_level(level.pk, 'composite')
render_data.save(level.pk)
map_history.save(MapHistory.level_filename(level.pk, 'composite'))