improve rendering

This commit is contained in:
Laura Klünder 2016-12-09 02:50:21 +01:00
parent cfd6f51978
commit 8f2548b172
2 changed files with 26 additions and 13 deletions

View file

@ -113,24 +113,31 @@ class LevelGeometries():
return cascaded_union(lineobstacles)
@cached_property
def obstacles(self):
def uncropped_obstacles(self):
obstacles = [obstacle.geometry for obstacle in self.level.obstacles.filter(crop_to_level__isnull=True)]
return cascaded_union(obstacles).intersection(self.mapped)
@cached_property
def cropped_obstacles(self):
levels_by_name = {}
obstacles_by_crop_to_level = {}
for obstacle in self.level.obstacles.all():
level_name = None if obstacle.crop_to_level is None else obstacle.crop_to_level.name
for obstacle in self.level.obstacles.filter(crop_to_level__isnull=False):
level_name = obstacle.crop_to_level.name
levels_by_name.setdefault(level_name, obstacle.crop_to_level)
obstacles_by_crop_to_level.setdefault(level_name, []).append(obstacle.geometry)
all_obstacles = []
for level_name, obstacles in obstacles_by_crop_to_level.items():
obstacles = cascaded_union(obstacles)
if level_name is not None:
obstacles = obstacles.intersection(levels_by_name[level_name].geometries.mapped)
obstacles = cascaded_union(obstacles).intersection(levels_by_name[level_name].geometries.mapped)
all_obstacles.append(obstacles)
all_obstacles.extend(self.lineobstacles)
return cascaded_union(all_obstacles).intersection(self.mapped)
@cached_property
def obstacles(self):
return cascaded_union([self.uncropped_obstacles, self.cropped_obstacles])
@cached_property
def raw_doors(self):
return cascaded_union([door.geometry for door in self.level.doors.all()]).intersection(self.mapped)