From bffc0f2191b2ea748bc5bc2b4079304d99b57385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 8 Jun 2017 16:21:32 +0200 Subject: [PATCH] fix svg rendering for new holes --- src/c3nav/mapdata/models/section.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/c3nav/mapdata/models/section.py b/src/c3nav/mapdata/models/section.py index 96d6af90..f89dcc5b 100644 --- a/src/c3nav/mapdata/models/section.py +++ b/src/c3nav/mapdata/models/section.py @@ -35,6 +35,9 @@ class Section(SpecificLocation, EditorFormMixin, models.Model): result['altitude'] = float(str(self.altitude)) return result + def _get_space_hole_geometries(self, space): + space.hole_geometries = cascaded_union([hole.geometry for hole in self.holes.all()]) + def _render_space_ground(self, svg, space): areas_by_color = {} for area in space.areas.all(): @@ -75,13 +78,19 @@ class Section(SpecificLocation, EditorFormMixin, models.Model): } for space in spaces: space_levels[space.level].append(space) - space_geometries = { - level: cascaded_union(tuple((s.geometry.difference(building_geometries) if s.outside else s.geometry) - for s in level_spaces)) - for level, level_spaces in space_levels.items()} + for space in space_levels['normal']: + if space.outside: + space.geometry = space.geometry.difference(building_geometries) + else: + space.geometry = space.geometry.intersection(building_geometries) + space_geometries = {level: cascaded_union(tuple(s.geometry for s in level_spaces)) + for level, level_spaces in space_levels.items()} - hole_geometries = cascaded_union(tuple(h.geometry for h in self.holes.all())) - hole_geometries = hole_geometries.intersection(space_geometries['normal']) + for space in spaces: + space_holes = cascaded_union(tuple(hole.geometry for hole in space.holes.all())) + space.hole_geometries = space_holes.intersection(space.geometry) + + hole_geometries = cascaded_union(tuple(space.hole_geometries for space in space_levels['normal'])) lower_spaces_by_color = {} for space in space_levels['lower']: