From 11017f0329c309477e81716d9800181cea8d2ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sat, 25 Nov 2017 21:42:42 +0100 Subject: [PATCH] improve/fix stair obstacle cutting (again) --- src/c3nav/mapdata/models/geometry/level.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/c3nav/mapdata/models/geometry/level.py b/src/c3nav/mapdata/models/geometry/level.py index 0ae8d434..261ec514 100644 --- a/src/c3nav/mapdata/models/geometry/level.py +++ b/src/c3nav/mapdata/models/geometry/level.py @@ -463,7 +463,12 @@ class AltitudeArea(LevelGeometryMixin, models.Model): line = space_geom.intersection(LineString([coord1, coord2])) if line.is_empty: continue - cuts.append(scale(line, xfact=1.02, yfact=1.02)) + factor = (line.length + 2) / line.length + line = scale(line, xfact=factor, yfact=factor) + centroid = line.centroid + line = min(assert_multilinestring(space_geom.intersection(line)), + key=lambda l: l.centroid.distance(centroid), default=None) + cuts.append(scale(line, xfact=1.01, yfact=1.01)) remaining_space = tuple( orient(polygon) for polygon in remaining_space