diff --git a/src/c3nav/mapdata/models/level.py b/src/c3nav/mapdata/models/level.py index 9b2cbdcc..65ce3f8a 100644 --- a/src/c3nav/mapdata/models/level.py +++ b/src/c3nav/mapdata/models/level.py @@ -156,6 +156,14 @@ class LevelGeometries(): def raw_doors(self): return cascaded_union([door.geometry for door in self.query('doors').all()]).intersection(self.mapped) + @cached_property + def raw_escalators(self): + return cascaded_union([escalator.geometry for escalator in self.query('escalators').all()]) + + @cached_property + def escalators(self): + return self.raw_escalators.intersection(self.accessible) + @cached_property def elevatorlevels(self): return cascaded_union([elevatorlevel.geometry for elevatorlevel in self.query('elevatorlevels').all()]) diff --git a/src/c3nav/mapdata/render/renderer.py b/src/c3nav/mapdata/render/renderer.py index 54234bdd..c79fe207 100644 --- a/src/c3nav/mapdata/render/renderer.py +++ b/src/c3nav/mapdata/render/renderer.py @@ -112,6 +112,9 @@ class LevelRenderer(): stroke_width=0.06, stroke_opacity=0.2)) + contents.append(self.polygon_svg(self.geometries.escalators, + fill_color='#B3B3B3')) + contents.append(self.polygon_svg(self.geometries.walls_shadow, fill_color='#000000', fill_opacity=0.06)) @@ -143,13 +146,19 @@ class LevelRenderer(): stroke_width=0.05)) contents.append(self.polygon_svg(self.geometries.uncropped_obstacles, - fill_color='#BDBDBD', - stroke_color='#9E9E9E', + fill_color='#A6A6A6', + stroke_color='#919191', stroke_width=0.05)) contents.append(self.polygon_svg(self.geometries.cropped_obstacles.buffer(-0.06, join_style=MITRE), - fill_color='#BDBDBD', - stroke_color='#9E9E9E', + fill_color='#A6A6A6', + stroke_color='#919191', + stroke_width=0.05)) + + wider_escalators = self.geometries.escalators.buffer(0.3, join_style=MITRE) + contents.append(self.polygon_svg(wider_escalators.intersection(self.geometries.uncropped_obstacles), + fill_color='#666666', + stroke_color='#666666', stroke_width=0.05)) contents.append(self.polygon_svg(self.geometries.walls,